正则表达式

80 阅读2分钟

正则表达式

校验表单的内容

js复杂类型

第一种

/字面量/

var reg=/abc/
//检查是否包含abc这连续的三个字母
console.log(reg)

第二种

var reg2=new RegExp("abc")
console.log(reg2)
mytext.onblur=function(){
    console.log(mytext.value)
    console.log(reg.test(mytext.value))
}//test包含的意思

元字符

\d 一位数字

.:匹配任何单字符,除了"\n"和放在方括号里的字符。

^:匹配输入的开始。

$:匹配输入的结束。

*:匹配前面的子表达式零次或多次。

+:匹配前面的子表达式一次或多次。

?:匹配前面的子表达式零次或一次。

\d:匹配一个数字字符。等价于[0-9]。

\s:匹配任何空白字符,包括空格、制表符、换页符。

\w:匹配字母、数字、下划线。

{n}:“n”是一个非负整数,匹配确定的“n”次。

{n,}:“n”是一个非负整数,至少匹配“n”次。

{n,m}:“n”和“m”均为非负整数,其中n<=m,最少匹配“n”次且最多匹配“m”次。

`` : 转义符,使之后的字符恢复字面意义。

大写代表非例\D非数字

边界符

^ :表示匹配的开始。如果在一个字符集合(用方括号标明)的开始使用,那么就表示这个字符集合里的字符在匹配的地方不能出现。

$ :表示匹配的结束。

\b :表示单词的边界。这个边界的两侧一定是一个单词字符(通常是字母、数字或下划线)和一个非单词字符或者就是字符串的开始或结束。

\B :表示非单词边界。也就是限定单词字符必须出现在两侧。

限定符

*:表示前面的字符可以不出现,或出现任意次(包括 1 次)。例如,“zo*”可以匹配 “z”、“zo” 及 “zoo”。

+:表示前面的字符必须至少出现一次(1次或多次)。例如,“zo+”可以匹配 “zo” 和 “zoo”,但不能匹配 “z”。

?:表示前面的字符最多只可以出现一次(0次或1次)。例如,“zo?”尽管在例如 “zoo” 中有两个 o,但只会匹配前两个字符 “zo”。

{n}:n 是一个非负整数。表示前面的字符必须出现 n 次。例如,“o{2}”不能匹配 “Bob” 中的 ‘o’,但可以匹配 “food” 中的两个 o。

{n,}:n 是一个非负整数。表示前面的模式必须至少出现 n 次。例如,“o{2,}”不能匹配 "Bob"中的’o’,但能匹配 "foooood"中的所有 o。“o{1,}” 等价于 “o+”。“o{0,}” 则等价于 “o*”。

{n,m}:m 和 n 均为非负整数,其中 n <= m。表示前面的模式出现的次数至少为 n 次,至多为 m 次。比如,“o{1,3}”将匹配 "fooooood"中的前三个 o。“o{0,1}” 等价于 “o?”。注意 n 和 m 之间不能有空格,否则会出错

特殊符号

  1. [] (方括号): 字符集合。在方括号内的任何字符都可能出现在匹配的字符串中。[^]取反
  2. {} (花括号): 匹配一个或多个数字或字母,如a{3}匹配 "aaa",{2,6}`表示字符可以重复2到6次。
  3. | (竖线):或运算符,允许有两个可能的匹配。例如,“z|o”可以匹配 “z” 或者 “o”。
  4. () (圆括号):定义一个组,组里的字符会组合在一起按照数量限定符进行匹配

捕获exec

var reg=/\d{3}/
console.log(reg.exec("aa123aa"))

标识符 g(全局标识符) i(忽略大小写)

正则表达式的两大特性

1.懒惰

2.贪婪

var rag=/\d{1,4}?/  //加?就是非贪婪模式
console.log(reg.exec("aa123456bb"))

3.非贪婪