正则表达式速查表

把正则表达式最常用的元字符、量词、分组和断言整理成速查表,写正则时对照查不用记。

Web 服务·共 40 条命令·最后更新 2026-07-06
返回 Web 服务

字符类 Character Class 8

.
匹配任意单个字符(不含换行符,除非 /s 标志)
\d \D
数字 / 非数字,等价于 [0-9] / [^0-9]
\w \W
单词字符 / 非单词字符,等价于 [a-zA-Z0-9_] / [^a-zA-Z0-9_]
\s \S
空白 / 非空白(空格、Tab、换行等)
\b \B
单词边界 / 非单词边界(零宽匹配)
[abc]
匹配 a、b 或 c 中任意一个
[^abc]
匹配除 a、b、c 外的任意字符
[a-z]
匹配 a 到 z 范围内的字符

量词 Quantifier 7

*
匹配 0 次或多次(贪婪)
+
匹配 1 次或多次(贪婪)
?
匹配 0 次或 1 次(可选)
{n}
恰好匹配 n 次
{n,}
至少匹配 n 次
{n,m}
匹配 n 到 m 次
*? +? ??
惰性匹配(非贪婪),尽可能少匹配

锚点与分支 Anchor & Alternation 5

^
匹配行首(多行模式下匹配每行开头)
$
匹配行尾
\A \Z
字符串开头 / 结尾(Python,不受多行模式影响)
a|b
匹配 a 或 b
(abc|xyz)
分组中的分支,匹配 abc 或 xyz

分组与捕获 Group & Capture 8

(pattern)
捕获分组,可反向引用 \1
(?:pattern)
非捕获分组,不保存匹配结果
(?P<name>pattern)
命名捕获组(Python 语法),JS 用 (?<name>pattern)
\1 \2
反向引用第 n 个捕获组
(?=pattern)
正向先行断言(后面要匹配 pattern)
(?!pattern)
负向先行断言(后面不匹配 pattern)
(?<=pattern)
正向后行断言(前面已匹配 pattern)
(?<!pattern)
负向后行断言(前面不匹配 pattern)

常用模式 Common Patterns 7

^\d{4}-\d{2}-\d{2}$
日期格式 YYYY-MM-DD
^\d{1,3}(\.\d{1,3}){3}$
IPv4 地址(简化版,未校验范围)
^[\w.-]+@[\w.-]+\.\w+$
邮箱地址(简化版)
^https?://[\w.-]+
HTTP/HTTPS URL 开头
\b\d+\.\d+\.\d+\.\d+\b
从文本中提取所有 IPv4 地址
"[^"]*"
匹配双引号字符串(不含转义)
^#[0-9a-fA-F]{6}$
十六进制颜色码 #RRGGBB

标志 Flag 5

g
全局匹配(找到所有匹配项)
i
忽略大小写
m
多行模式(^ 和 $ 匹配每行)
s
单行模式(. 匹配换行符)
u
Unicode 模式(正确处理中文等)

💡 提示

  • 贪婪匹配 .* 会尽可能多匹配,容易过度捕获,需要惰性匹配时用 .*?。
  • grep 默认使用 BRE(基本正则),+、?、| 需转义或用 grep -E(ERE)。
  • 命名捕获组语法不统一:Python (?P<name>),JavaScript/Java (?<name>),PHP/(?P<name>)。