正则表达式是匹配模式,要么匹配字符,要么匹配位置
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)的