JS中正则表达式两种创建方式:
- 字面量:
let reg = /abc/
- RegExp构造函数:
let reg = new RegExp('abc')
修饰符
i
:忽略大小写
g
:全局匹配
m
:多行匹配
元字符
大多数字符在正则表达式中只是是字面意思如/a/匹配a,这类字符叫做字面量字符 除了字面量字符,还有一部分特殊字符,不代表其字面意思,叫做元字符
字符类
.
:点字符匹配除回车(\r)、换行(\n) 、行分隔符(\u2028)和段分隔符(\u2029)以外的所有字符。
注意,对于码点大于0xFFFF的 Unicode 字符,点字符不能正确匹配,会认为这是两个字符。
|
:或关系
[a-z]
:表示26个小写字母任意一个都可以匹配
[0-9]
:表示数字0-9任意一个数字可以匹配
[a-zA-Z0-9]
:表示大小写a-z0-9任意一个可以匹配
[^0-9]
:表示非0-9的任意一个字符可以匹配
特殊字符
\w
:匹配字母数字下划线_ ,相当于[a-zA-Z0-9_]
\W
:匹配非字母数字下划线_ ,相当于[^a-zA-Z0-9_]
\d
:匹配数字,相当于[0-9]
\D
:匹配数字,相当于[^0-9]
\s
:匹配空格(包括换行符、制表符、空格符等,相等于[ \t\r\n\v\f]
\S
:匹配非空格的字符,相当于[^ \t\r\n\v\f]
重复字符
{m,n}
:匹配m-n个,包含m,n
{m}
:匹配m个,限定m个
{m,}
:匹配m个或m个以上
量词
*
:匹配0个,1个或多个
+
:匹配1个或者多个
?
:匹配0个或者1个
非贪婪模式:量词符后加?
位置字符
/^[0-9]/
:/^
以0-9开始的任意一个数字可以匹配
/[a-z]$/
:$/
以a-z任意小写字母结尾的可以匹配
分组
()
:分组
(?:[a-z])
:非捕获性分组
(a?(b?))
:嵌套分组,从外向内获取
m(?=n)
:先行断言匹配,m只有在n前面才匹配
m(?!n)
:先行否定断言匹配,m只有不在n前面才匹配