正则表达式速查

正则表达式语法速查,常用模式参考。

基础语法

.

匹配任意单个字符(除换行符)

/a.c/ → "abc", "a1c"

\

转义特殊字符

/a\.c/ → "a.c"

|

或(交替匹配)

/cat|dog/ → "cat" 或 "dog"

()

捕获分组

/(ab)+/ → "abab"

(?:)

非捕获分组

/(?:ab)+/ → "abab"(不捕获)

[...]

字符集,匹配其中任意一个

/[aeiou]/ → 匹配元音

[^...]

否定字符集

/[^0-9]/ → 匹配非数字

[a-z]

字符范围

/[a-zA-Z]/ → 匹配字母

量词

*

匹配前一个表达式 0 次或多次

/ab*c/ → "ac", "abc", "abbc"

+

匹配前一个表达式 1 次或多次

/ab+c/ → "abc", "abbc"

?

匹配前一个表达式 0 次或 1 次

/ab?c/ → "ac", "abc"

{n}

匹配前一个表达式恰好 n 次

/a{3}/ → "aaa"

{n,}

匹配前一个表达式至少 n 次

/a{2,}/ → "aa", "aaa"

{n,m}

匹配前一个表达式 n 到 m 次

/a{2,4}/ → "aa", "aaa", "aaaa"

*?

* 的非贪婪(惰性)版本

/a.*?b/ → 最短匹配

+?

+ 的非贪婪(惰性)版本

/a.+?b/ → 最短匹配

??

? 的非贪婪(惰性)版本

/a??b/ → 优先不匹配 a

锚点

^

匹配字符串开头

/^Hello/ → 以 Hello 开头

$

匹配字符串结尾

/world$/ → 以 world 结尾

\b

匹配单词边界

/\bcat\b/ → "cat" 不匹配 "catch"

\B

匹配非单词边界

/\Bcat\B/ → "catch" 中的 cat

字符类

\d

匹配数字 [0-9]

/\d+/ → "123"

\D

匹配非数字 [^0-9]

/\D+/ → "abc"

\w

匹配单词字符 [a-zA-Z0-9_]

/\w+/ → "hello_1"

\W

匹配非单词字符

/\W+/ → "!@#"

\s

匹配空白字符(空格、制表符等)

/\s+/ → " "

\S

匹配非空白字符

/\S+/ → "hello"

\n

匹配换行符

/\n/ → 换行

\t

匹配制表符

/\t/ → Tab

\0

匹配 NULL 字符

/\0/ → NULL

断言

(?=...)

正向先行断言

/\d(?=px)/ → "2px" 中的 2

(?!...)

负向先行断言

/\d(?!px)/ → "2em" 中的 2

(?<=...)

正向后行断言

/(?<=\$)\d+/ → "$100" 中的 100

(?<!...)

负向后行断言

/(?<!\$)\d+/ → "100" 中的 100

修饰符(Flags)

标志名称说明
gglobal全局搜索,找到所有匹配
iignoreCase不区分大小写
mmultiline多行模式,^ 和 $ 匹配行首行尾
sdotAll让 . 匹配包括换行符在内的所有字符
uunicodeUnicode 模式,正确处理 Unicode 字符
ysticky粘性匹配,仅从 lastIndex 位置开始