全部文章

正则表达式速查

正则表达式语法速查、常用模式、在线测试工具与各语言示例

目录 25 节

正则表达式速查

这页适合作为“正则表达式从看得懂到写得稳”的速查表。正则的难点往往不在语法本身,而在于:你是否知道该用到什么程度、该怎么调试、什么时候应该停下来改用更可读的解析方式。

推荐掌握顺序

建议按下面顺序学习:

  1. 先记住字符类、量词、分组、边界
  2. 再掌握常见模式和替换
  3. 然后学习前瞻、后顾等断言
  4. 最后再处理跨语言差异和复杂表达式优化

先把“匹配什么”和“为什么多匹配 / 少匹配”搞明白,比上来就写复杂断言更重要。

基础语法

语法说明示例
.任意字符(除换行)a.c → abc, a1c
\d数字 [0-9]\d+ → 123
\w字母数字下划线 [a-zA-Z0-9_]\w+ → hello_1
\s空白字符a\sb → a b
\D \W \S上述取反
^行首^Hello
$行尾world$
\b单词边界\bword\b

量词

语法说明
*0 次或多次
+1 次或多次
?0 次或 1 次
{n}恰好 n 次
{n,}至少 n 次
{n,m}n 到 m 次
*? +?非贪婪匹配

分组与引用

(abc)       捕获组
(?:abc)     非捕获组
(?<name>x)  命名捕获组
\1          反向引用第 1 组
(a|b)       或

断言(Lookaround)

(?=abc)     正向前瞻:后面是 abc
(?!abc)     负向前瞻:后面不是 abc
(?<=abc)    正向后顾:前面是 abc
(?<!abc)    负向后顾:前面不是 abc

常用模式

邮箱

[\w.+-]+@[\w-]+\.[\w.]+

URL

https?://[\w\-._~:/?#\[\]@!$&'()*+,;=%]+

IP 地址

\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b

中文字符

[\u4e00-\u9fa5]+

手机号(中国大陆)

1[3-9]\d{9}

HTML 标签

<[^>]+>

日期(YYYY-MM-DD)

\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])

各语言示例

JavaScript

const regex = /\d+/g;
const matches = "abc123def456".match(regex); // ['123', '456']

// 命名捕获组
const dateRegex = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/;
const { groups } = "2026-02-27".match(dateRegex);
// groups.year === '2026'

Python

import re

matches = re.findall(r'\d+', 'abc123def456')  # ['123', '456']

# 替换
result = re.sub(r'\s+', ' ', 'hello   world')  # 'hello world'

PowerShell

# 匹配
'abc123' -match '\d+'
$Matches[0]  # '123'

# 替换
'hello   world' -replace '\s+', ' '  # 'hello world'

在线工具

工具说明
regex101最强正则测试工具,支持多语言
regexr可视化正则编辑器
RegExper正则可视化图表

常见问题

明明匹配到了,但结果不对

高频原因通常包括:

  • .* 太贪婪
  • 忘了加边界,例如 \b
  • 多行 / 单行模式与预期不一致
  • 在字符串字面量里少写或多写了转义

在线能用,代码里失效

这通常是因为不同语言的正则实现存在细节差异,或者字符串本身需要二次转义。例如 JavaScript 和 Python 在字面量写法上就不完全一样。

正则越来越长,自己都看不懂

这往往说明表达式已经超出“易维护”的范围。可以考虑:

  • 拆成多段处理
  • 增加注释或命名分组
  • 对结构化数据改用真正的解析器,而不是只靠正则硬匹配

编写建议

  • 先写最小可用版本,再逐步加限制条件
  • regex101 这类工具里用多个正例和反例一起验证
  • 处理用户输入时,注意性能和 ReDoS 风险,不要写无限回溯型表达式

延伸阅读

参考链接

阅读建议
  • - 先读标题和摘要,再结合目录决定从哪个章节开始精读。
  • - 看到具体命令、配置或步骤时,尽量在自己的环境里同步验证。
  • - 工具类页面更适合和同类替代方案一起比较,不建议只看单一推荐。
适合谁看
  • - 希望把零散经验整理成长期可复用工作流的人
  • - 希望快速筛选在线服务并减少信息噪音的人
  • - 希望阅读时顺手建立自己的操作清单或收藏体系的人
执行前检查
  • - 先浏览标题、摘要和目录,带着问题阅读会更高效
  • - 确认要上传的数据是否敏感,并优先使用临时数据做首次验证
  • - 如果页面里提到相关文档,尽量一起打开对照,效果通常更完整
同类内容
← 上一篇网页抓取与自动化