正则表达式参考

字符类

语法 名称 说明 示例
. 任意字符 匹配除换行外的任意字符 .at → hat,cat,mat
\d 数字 匹配数字 \d{3} → 123,456
\D 非数字 匹配非数字 \D → a,b,!
\w 单词字符 字母数字下划线 \w+ → hello_world
\W 非单词字符 非单词 \W → @,#,!
\s 空白 空格制表换行 \s → space,tab
\S 非空白 非空白字符 \S → a,1,X
[abc] 字符集 匹配括号内字符 [aeiou] → a,e,i,o,u
[^abc] 排除集 不匹配括号内 [^0-9] → a,b,!
[a-z] 范围 匹配范围内字符 [A-Z] → A,B,C
\n\t\r 转义 控制字符 \n → newline

量词

语法 名称 说明 示例
* 零次或多次 0+次,贪婪 a* → "",a,aa,aaa
+ 一次或多次 1+次 a+ → a,aa,aaa
? 可选 0或1次 colou?r → color,colour
{n} 恰好n次 恰好n次 \d{3} → 123,456
{n,} n次以上 n+次 \d{2,} → 12,12345
{n,m} n到m次 n到m次 \d{2,4} → 12,123,1234
*? 惰性星号 0+次,尽量少 a.*?b → ab,aXb
+? 惰性加号 1+次,尽量少 a.+?b → aXb,aXYb

锚点

语法 名称 说明 示例
^ 开头 字符串/行开头 ^Hello → Hello world
$ 结尾 字符串/行结尾 end$ → the end
\b 单词边界 单词与非单词间 \bcat\b → cat not catch
\B 非边界 非单词边界 \Bcat → location

分组与环视

语法 名称 说明 示例
(...) 捕获组 捕获供引用 (ab)+ → ababab
(?:...) 非捕获组 分组不捕获 (?:ab)+ → matches,no capture
(?=...) 正向预查 断言后面匹配 foo(?=bar) → foobar
(?!...) 负向预查 断言后面不匹配 foo(?!bar) → food not foobar
| 任选其一 cat|dog → cat or dog
\1 反向引用 匹配组1内容 (\w)\1 → aa,bb,cc

标志

语法 名称 说明 示例
g 全局 全部匹配 /cat/g → all matches
i 忽略大小写 不区分大小写 /cat/i → Cat,CAT,cat
m 多行 每行匹配 ^ and $ match each line
u Unicode Unicode Unicode support
s Dotall 点匹配换行 . matches newline too

常用模式

语法 名称 说明 示例
\d{3}-\d{4} 电话 电话号码 010-1234
[\w.-]+@[\w-]+\.[a-z]{2,} 邮箱 电子邮件 [email protected]
https?://[\w.-]+ 网址 网页URL https://example.com
\d{4}-\d{2}-\d{2} 日期 年-月-日格式 2024-01-15
[A-Z][a-z]+ 大写开头 首字母大写 Hello,World
#[0-9a-fA-F]{6} 十六进制颜色 6位十六进制颜色 #FF6600,#ff6600