Regular Expression。简写为 regex 或 RegExp。
正则表达式在 JS 中
正则表达式也是对象。
定义方式一般是字面量,用两个斜杠包裹,如:/ab+c/
。
或者用 RegExp
构造函数,如:new RegExp('ab+c', 'i')
。第一个参数可以是字面量或字符串,第二个参数是标志参数。
RegExp 方法
exec
参数是指定字符串,返回值是一个结果数组或 null。
test
参数是指定字符串,返回值是布尔值。
String 方法
match
参数是正则表达式,返回值是一个结果数组或 null。
matchAll
参数是正则表达式,返回值是一个结果数组或 null,结果数组每个元素也是个数组,其中包括匹配结果和所有捕获组。
search
参数是正则表达式,返回值是匹配结果的索引或 -1。
replace
参数是正则表达式和替换字符串,返回值是替换后的字符串。
split
参数是正则表达式,返回值是一个字符串数组。
正则表达式的特殊字符
^
:匹配输入的开始。$
:匹配输入的结束。n{X}
:匹配包含 X 个 n 的序列的字符串。n{X,Y}
:匹配包含 X 至 Y 个 n 的序列的字符串。n{X,}
:匹配包含至少 X 个 n 的序列的字符串。*
:匹配前面的子表达式零次或多次。等价于{0,}
。+
:匹配前面的子表达式一次或多次。等价于{1,}
。?
:匹配前面的子表达式零次或一次。等价于{0,1}
。?
:紧跟在量词*、 +、? 或 {}
的后面,表示在非贪婪匹配中,匹配尽量少的字符。x(?=y)
:先行断言,匹配 ‘x’ 仅当 ‘x’ 后面跟着 ‘y’。即正向肯定预查。x(?!y)
:匹配 ‘x’ 仅当 ‘x’ 后面不跟着 ‘y’。即正向否定预查。(?<=y)x
:后行断言,匹配 ‘x’ 仅当 ‘x’ 前面是 ‘y’。即反向肯定预查。(?<!y)x
:匹配 ‘x’ 仅当 ‘x’ 前面不是 ‘y’。即反向否定预查。.
:匹配除换行符\n
之外的任何单个字符。(x)
:匹配 ‘x’ 并且记住匹配项。即捕获组。(?:x)
:匹配 ‘x’ 但是不记住匹配项。即非捕获组。x|y
:匹配 ‘x’ 或 ‘y’。[xyz]
:字符集合,匹配包含的任一字符。[^xyz]
:反向字符集合,匹配未包含的任一字符。\f
:匹配一个换页符。\n
:匹配一个换行符。\r
:匹配一个回车符。\t
:匹配一个制表符。\v
:匹配一个垂直制表符。\s
:匹配任何空白字符,包括空格、制表符、换页符等。等价于[\f\n\r\t\v]
。\d
:匹配一个数字字符。等价于[0-9]
。\D
:匹配一个非数字字符。等价于[^0-9]
。\S
:匹配任何非空白字符。等价于[^\f\n\r\t\v]
。\w
:匹配包括下划线的任何单词字符。等价于[A-Za-z0-9_]
。\W
:匹配任何非单词字符。等价于[^A-Za-z0-9_]
。\b
:匹配一个单词边界,即字与空格间的位置。\B
:匹配非单词边界。[\b]
: 匹配退格键。\0
:匹配一个 NUL 字符。\x
:x 为数字,返回第 x 个捕获组的匹配。\xxx
:匹配由八进制数 xxx 指定的字符。\xdd
:匹配由十六进制数 dd 指定的字符。\uxxxx
:匹配由十六进制数 xxxx 指定的 Unicode 字符。
正则表达式的标志
g
:全局匹配。i
:不区分大小写。m
:多行匹配。s
:允许.
匹配换行符。u
:启用 Unicode 匹配。y
:粘连匹配。