普通字符(最基础)

符号 含义 示例
a~z 字母本身 abc 匹配 “abc”
0~9 数字本身 123 匹配 “123”
其他符号 除特殊字符外,其它字符本身 @#- 匹配这些字符

元字符(具有特殊意义)

符号 含义 示例
. 任意单个字符(除换行) a.c 匹配 abca1c
^ 匹配字符串开头 ^abc 匹配以 abc 开头
$$` 匹配字符串结尾 abc$$ 匹配以abc` 结尾
[] 字符集,匹配其中任一字符 [abc] 匹配 abc
[^] 排除字符集,匹配不在其中的字符 [^abc] 匹配非 abc 的字符
`\ ` 或操作,匹配左右任一模式 `a\ b匹配ab`
() 分组,可用于提取或重复 (abc)+ 匹配 “abcabc”
\ 转义字符,用于匹配特殊符号本身 \. 匹配字面上的点号 .

数量词(表示重复次数)

符号 含义 示例
* 匹配前一项 0次或多次 a* 可匹配 “”, “a”, “aaa”
+ 匹配前一项 1次或多次 a+ 匹配 “a”, “aa” 等
? 匹配前一项 0次或1次 a? 匹配 “” 或 “a”
{n} 匹配前一项 恰好 n 次 a{3} 匹配 “aaa”
{n,} 匹配前一项 至少 n 次 a{2,} 匹配 “aa”, “aaa”, …
{n,m} 匹配前一项 n 到 m 次之间 a{1,3} 匹配 “a”, “aa”, “aaa”

懒惰匹配(非贪婪)

默认所有数量词都是贪婪的(尽量多匹配),加上 ? 变成非贪婪(尽量少匹配)

符号 含义 示例
*? 0次以上,尽可能少匹配 <.*?> 匹配 <h1> 而非整个标签组
+? 1次以上,尽可能少匹配 ".+?" 匹配最短一对引号之间内容
?? 0或1次,尽可能少匹配 a?? 有也匹配,无也匹配(偏向少)
{n,m}? n到m次,尽可能少 a{2,5}? 匹配2~5个a,越少越好

定位符(锚点)

符号 位置匹配作用 示例
^ 匹配字符串开头 ^abc 只匹配 “abc” 出现在开头
$$` 匹配字符串结尾 `abc$$ 只匹配 “abc” 出现在末尾
\b 单词边界(前后是非\w) \bword\b 匹配整个单词
\B 非单词边界 \Bword\B 匹配“词中”的 word

转义字符(特殊含义字符)

符号 含义 等价于
\d 匹配数字(0-9) [0-9]
\D 匹配非数字 [^0-9]
\w 匹配单词字符(字母、数字、下划线) [a-zA-Z0-9_]
\W 匹配非单词字符 [^a-zA-Z0-9_]
\s 匹配空白字符(空格、Tab、换行等) [ \t\r\n\f]
\S 匹配非空白字符 [^ \t\r\n\f]
\\ 匹配反斜线 \ -
\. 匹配点号 . 本身 -

其他语法(进阶)

语法 含义 示例
(?:...) 非捕获分组(不参与 group 提取) (?:abc)+
(?=...) 正向肯定预查(匹配后面是) a(?=b) 匹配 “a” 若后是 “b”
(?!...) 正向否定预查(匹配后面不是) a(?!b) 匹配 “a” 若后不是 “b”
(?<=...) 反向肯定预查(匹配前面是) (?<=a)b 匹配 “b” 若前是 “a”
(?<!...) 反向否定预查(匹配前面不是) (?<!a)b 匹配 “b” 若前不是 “a”