JS中正则表达式两种创建方式:

  1. 字面量: let reg = /abc/
  2. 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前面才匹配