正则表达式速查
正则表达式语法速查,常用模式参考。
基础语法
.匹配任意单个字符(除换行符)
/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)
| 标志 | 名称 | 说明 |
|---|---|---|
| g | global | 全局搜索,找到所有匹配 |
| i | ignoreCase | 不区分大小写 |
| m | multiline | 多行模式,^ 和 $ 匹配行首行尾 |
| s | dotAll | 让 . 匹配包括换行符在内的所有字符 |
| u | unicode | Unicode 模式,正确处理 Unicode 字符 |
| y | sticky | 粘性匹配,仅从 lastIndex 位置开始 |