📝 博客 · 2026-08-02 · ⏱ 12 分钟

正则表达式在线测试:可视化匹配与调试工具

正则表达式在线测试工具对比,包含可视化匹配、分组捕获、回溯调试,附 20 个常用正则速查表。

正则表达式Regex在线工具开发调试

正则表达式在线测试:可视化匹配与调试工具

正则表达式是程序员的"瑞士军刀",但语法晦涩、调试困难。一个 . * + 写错位置,匹配结果天差地别。在线正则测试工具能可视化显示匹配过程,是写正则必备的效率神器。本文对比工具 + 教你写好正则。

正则表达式是什么

正则表达式(Regular Expression,简称 Regex)是用特殊语法定义的字符串匹配模式。它能:

正则基础语法速查

字符类

量词

边界

分组

修饰符

5 款正则测试工具对比

1. 52tool.net 正则表达式在线测试(综合首选)

工具地址:正则表达式在线测试

2. 52tool.net 正则可视化

工具地址:正则可视化

3. regex101.com

4. Regulex

5. Debuggex

实战教程:写一个邮箱正则

场景

表单需要校验用户输入是否为合法邮箱。

步骤 1:分析邮箱结构

邮箱格式:用户名@域名.顶级域

步骤 2:写出初版

\w+@\w+\.\w+

匹配 tom@example.com,但漏掉了 tom.smith@example.com(用户名有点)。

步骤 3:完善

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

现在能匹配带点的用户名和域名。

步骤 4:用工具测试

进入 52tool 正则测试

  tom@example.com
  tom.smith@example.co.uk
  invalid-email
  @example.com

工具高亮显示匹配到的邮箱,标红未匹配的"invalid-email"和"@example.com"。

步骤 5:加边界限制

原正则会匹配 tom@example.com 中的子串,但对 invalid-email 也部分匹配。加边界:

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

^$ 锁定整个字符串,必须完全匹配。

步骤 6:精炼

顶级域至少 2 位,最长 6 位:

^[\w.-]+@[\w.-]+\.[A-Za-z]{2,6}$

步骤 7:再测试

test@example.com      ✅ 匹配
test.example@x.co     ✅ 匹配
test@example.c         ❌ 顶级域太短
test@example.company   ❌ 顶级域太长(但你也可以放宽到 10)

如果需要更严格的邮箱校验,用 RFC 5322 标准正则(几百字符),但 99% 场景上面这版够用。

实战教程:手机号校验

场景

校验中国大陆手机号。

中国手机号规则

正则

^1[3-9]\d{9}$

测试

13812345678   ✅
12345678901   ❌(第二位是 2,不存在这个号段)
1381234567    ❌(10 位)
138123456789  ❌(12 位)

实战教程:提取 URL

场景

从文本中提取所有 URL。

正则

https?://[\w./-]+

测试

访问 https://52tool.net 学习更多工具
我的博客是 http://blog.example.com/post/123
联系我:mailto:test@test.com(不会匹配,因为不是 http)

匹配结果:

https://52tool.net
http://blog.example.com/post/123

实战教程:分组捕获

场景

2026-08-02 提取年、月、日。

正则

(\d{4})-(\d{2})-(\d{2})

三个括号分别是三个捕获组。

在工具中查看

52tool 正则测试 会列出每个捕获组的内容:

替换

$1$2$3 引用捕获组,把日期格式从 YYYY-MM-DD 改成 DD/MM/YYYY

替换字符串:$3/$2/$1

结果:02/08/2026

20 个常用正则速查

校验类

用途正则
邮箱^[\w.-]+@[\w.-]+\.[A-Za-z]{2,6}$
中国手机号^1[3-9]\d{9}$
身份证号^\d{17}[\dXx]$
邮编^\d{6}$
IP 地址^(\d{1,3}\.){3}\d{1,3}$
URL^https?://[\w./-]+$
QQ 号^[1-9]\d{4,10}$
中文字符^[\u4e00-\u9fa5]+$
整数^-?\d+$
小数^-?\d+\.\d+$

提取类

用途正则
所有 URLhttps?://[\w./-]+
HTML 标签<[^>]+>
图片标签]+src="([^"]+)"
双引号字符串"([^"]*)"
RGB 颜色#[0-9A-Fa-f]{6}
数字\d+
英文单词[A-Za-z]+
链接文字]*>([^<]+)
日期 YYYY-MM-DD\d{4}-\d{2}-\d{2}
时间 HH:MM:SS\d{2}:\d{2}:\d{2}

进阶技巧

1. 贪婪与非贪婪

默认贪婪(匹配最多),加 ? 变非贪婪(匹配最少):

贪婪:<.*>       匹配 "<a><b>" 整体
非贪婪:<.*?>    匹配 "<a>" 和 "<b>" 两个

提取 HTML 标签内容用非贪婪,否则会从第一个 < 匹配到最后一个 >

2. 先行断言

匹配后面跟着特定内容的字符串:

\d+(?=元)

匹配 100元 中的 100,但不消耗"元"。

3. 后行断言

匹配前面是特定内容的字符串(JavaScript ES2018+ 支持):

(?<=¥)\d+

匹配 ¥100 中的 100

4. 命名分组

给捕获组起名字,比 $1$2 更清晰:

(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})

引用:${year}/${month}/${day}

5. 用可视化工具理解

复杂正则看不懂?粘贴到 52tool 正则可视化,自动生成流程图,每个分组、量词、字符类都一目了然。

常见问题解答

Q: 不同语言的正则语法一样吗?

A: 大体相同,但有差异。JavaScript 用 /pattern/flags 字面量,Python 用 re 模块,Java 用 Pattern 类。具体语法(如命名分组、后行断言)支持程度不同。52tool 工具可切换语言模式。

Q: 正则性能问题怎么排查?

A: 复杂正则可能导致"灾难性回溯"(Catastrophic Backtracking),匹配几毫秒变几小时。用 52tool 正则可视化 看流程图,如果有大量嵌套量词(如 (a+)+),可能有问题。改用更具体的字符类或原子组(Atomic Group)。

Q: 正则能解析 HTML 吗?

A: 不能完美解析。HTML 是嵌套结构,正则是正则语言(无法处理嵌套)。简单 HTML(无嵌套)可以提取,复杂 HTML 用 BeautifulSoup、DOM 解析器等工具。

Q: 正则能解析 JSON 吗?

A: 不能。JSON 也是嵌套结构。用 JSON.parse() 等专用解析器。

Q: 怎么记住这么多正则语法?

A: 不用记。常用语法(. \d \w * + ? [] () ^ $)记住即可,复杂的查阅文档。把常用正则存到笔记软件(如 Notion、Obsidian),需要时复制。

Q: 正则中的特殊字符怎么匹配?

A: 用反斜杠转义。匹配 .\.,匹配 *\*,匹配 ?\?。匹配反斜杠本身用 \\

Q: 修饰符 g、i、m 怎么用?

A: g 全局匹配(找出所有,不只第一个),i 忽略大小写(a 匹配 A),m 多行模式(^ $ 匹配每行开头结尾,而不是整个字符串)。JavaScript 写法:/pattern/gim

总结

正则表达式是开发者的必备技能,52tool.net 的正则测试工具 + 可视化工具能让你写正则效率翻倍。

写正则的三步流程:

  1. 分析规则:把要匹配的内容用自然语言描述清楚
  2. 写出初版:从简单语法开始,逐步完善
  3. 用工具测试52tool 正则测试 实时验证

遇到复杂正则看不懂,用 正则可视化 转流程图。把常用正则整理成速查表,下次直接复用。