正则表达式

正则表通常被用来检索、替换那些符合某个模式(规则)的文本

组成

边界符

边界符 说明
^ 表示匹配行首的文本(以谁开始)
$ 表示匹配行尾的文本(以谁结束)
( ) 标记一个子表达式的开始和结束位置

1、 ()

/([1-9])([a-z])/g

匹配 1a2b -> 1a 2b

圆括号会有一个副作用,使相关的匹配会被缓存,此时可用 ?: 放在第一个选项前来消除这种副作用

字符类

[]方括号

一系列字符可供选择,只要匹配其中一个就可以了

量词符

量词 说明
* 重复0次或更多次, 要匹配 * 字符,使用 *
+ 重复1次或更多次, 要匹配 + 字符,使用 +
? 重复0次或1次, 要匹配 ? 字符,使用 ?
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次

特殊字符

特殊字符 说明
` `

修饰符

预定义类

预定类 说明
\cx 匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符
\f 匹配一个换页符
\n 换行符
\r 回车符
\t 匹配一个制表符
\v 匹配一个垂直制表符
\d 匹配0-9之间的任一数字, 相当于[0-9]
\D 匹配所有0-9以外的字符,相当于[^0-9]
\w 匹配任意的字母、数字和下划线,相当于[A-Za-z0-9_ ]
\W 除所有字母、数字和下划线以外的字符,相当于[^A-Za-z0-9_ ]
\s 匹配空格(包括换行符、制表符、空格符等),相等 于[ \tlr\n\v\f]
\S 匹配非空格的字符,相当于[^ \tlr\n\v\f]
\b 匹配一个单词边界,即字与空格间的位置
\B 非单词边界匹配

运算符的优先级

从高到低: