js正则RegExp

111 阅读2分钟

正则表达式是匹配模式,要么匹配字符,要么匹配位置

1、修饰符

g 执行全局匹配,即查找所有匹配,而不是在第一个匹配后停止
i 执行不区分大小写的匹配
m 执行多行匹配

2、括号

[abc] // 匹配在方括号中的任意字符
[^abc] // 匹配不在括号中的任意字符
(x|y) // 匹配指定的任何代替方案

3、元字符

\d // 数字 
\D // 非数字 
\w // 匹配字母和数字[0-9a-zA-Z_] 
\W // 匹配非字母和数字[^0-9a-zA-Z_] 
\s // 匹配空格 换行和缩进符[\t\v\n\r\f] 
\S // 匹配非空格 换行和缩进符[^\t\v\n\r\f]
.  //匹配除换行符 \n 之外的任何单字符。

4、量词

1. {m,} // 至少出现m次 
2. {m} // 出现m次 
3. ? // 出现0次或者1次,等价于{0,1}     
4. + // 至少出现1次,等价于{1,}  
5. * // 出现>=0次,等价于{0,}

5、正则表达式对象方法

exec() 搜索其字符串参数中的匹配项

test() 测试其字符串参数是否匹配并返回布尔值

toString() 返回表示指定对象的字符串

6、贪婪模式与惰性模式

贪婪模式:匹配尽可能多的字符。首先对比整个字符串是否匹配,如果匹配不成功则去掉字符串最后一个字符再继续进行匹配,以此类推直到匹配成功或不剩字符才停止。

惰性模式:匹配尽可能少的字符。首先从字符串第一个字符开始匹配,如果匹配成功则停止匹配,否则加入第二个字符继续匹配,以此类推直到匹配成功或不剩字符才停止。

7、正则中常用来表示位置的符号主要有:

(1)^ 脱字符,匹配行的开头

^z 匹配任何以z开头的字符串

[^z] 匹配不在括号中的任意字符

(2) z$

匹配任何以z结尾的字符串

(3) \b

在单词的开头/结尾找到匹配项

规则:

① \w和\W之间的位置

② ^与\w之间的位置

③ \w与$之间的位置

(4)\B

匹配不在单词开头/结尾处的匹配项

规则:

① \w与\w之间的位置

② \W与\W之间的位置

③^与\W之间的位置

④\W与$之间的位置

(5)?=p

符合p子模式前面的那个位置

(6)(?!p)

与(?=p)反过来的意思,可以理解为(?=p)匹配到的位置之外的位置都是属于(?!p)的

(7)(?<=p)

符合p子模式后面(注意(?=p)表示的是前面)的那个位置

(8)(?<!p)

与(?<=p)反过来的意思,可以理解为(?<=p)匹配到的位置之外的位置都是属于(?<!p)的