正则表达式测试工具 - 在线测试正则匹配/捕获组(免费)

1884 字
9 分钟
正则表达式测试工具 - 在线测试正则匹配/捕获组(免费)

🌟 为什么需要一个”正则测试器”#

正则表达式是”写起来快、调起来慢”的典型。一个字符写错,结果就可能完全不同,而且很难一眼看出问题。星点正则测试器让你把正则和测试文本放在一起,输入即看到结果:是否匹配、匹配了几处、每处的内容与位置、捕获组各是什么。

不用再写一段代码跑一遍,也不用在脑子里”模拟执行”。这是学习和调试正则最高效的方式。


🚀 怎么用(详细步骤)#

  1. 打开正则测试器;
  2. 在正则输入框写表达式(不含两边的 /);
  3. 勾选需要的 Flags(如 g 全局、i 忽略大小写);
  4. 在下方粘贴测试文本;
  5. 立刻看到:是否匹配、匹配数量、文本中的高亮、以及匹配详情;
  6. 点击匹配结果可定位原文,点击原文高亮可查看该处详情。

🔍 你能看到什么#

结果说明
是否匹配一眼判断正则是否命中
匹配数量全局匹配时的命中次数
匹配内容每一处匹配到的文本
起始 / 结束位置匹配在原文中的索引
长度每处匹配的字符数
捕获组( ) 捕获到的子串,含命名组
未参与匹配的组值为空的捕获组
行列位置匹配落在第几行第几列
错误信息正则不合法时给出原因与位置

🧱 正则基础(看这一节就够开始)#

字符:匹配”什么”#

写法含义
.任意字符(默认不含换行)
\d数字
\w字母/数字/下划线
\s空白
[abc]a、b 或 c
[^abc]除 a、b、c 外

量词:重复”几次”#

写法含义
*0 次或多次
+1 次或多次
?0 或 1 次
{n}恰好 n 次
{n,m}n 到 m 次
*? +?懒惰匹配(尽量少)

位置与分组#

写法含义
^ / $行/串首尾
\b单词边界
( )捕获组
(?: )非捕获组
(?<name> )命名捕获组
竖线或(分支)

🏁 Flags 快速说明#

Flag作用
g全局匹配(找到所有匹配)
i忽略大小写
m多行模式(^ $ 匹配每行首尾)
sDotAll(. 匹配换行符)
uUnicode 模式
y粘性匹配

💡 十个实战示例#

1. 匹配邮箱#

[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}

粘贴几行邮箱,即可看到每一处命中与捕获组。

2. 匹配手机号(中国大陆)#

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

3. 匹配日期并取分组#

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

捕获组分别得到年、月、日。

4. 忽略大小写#

正则 hello + i,则 Hello、HELLO 都命中。

5. 匹配 URL#

https?://[^\s]+

6. 匹配 IP 地址(简版)#

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

7. 匹配中文#

[\u4e00-\u9fa5]+

8. 匹配重复单词#

\b(\w+)\s+\1\b

\1 反向引用,要求与组 1 相同。

9. 密码强度(前瞻)#

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,20}$

10. 提取引号内的内容#

"([^"]*)"

⚠️ 常见错误与排查#

现象可能原因处理
只匹配第一处忘了 g勾选全局
跨行匹配失败. 不含换行加 s 或改用 [\s\S]
^$ 只匹配整段未开多行加 m
匹配太多贪婪 .*用 .*?
特殊字符失效未转义\. \+ \(
中文/emoji 异常未开 Unicode加 u
结果忽多忽少带 g 的正则有 lastIndex 状态新建正则或重置

更系统的排查用正则调试器。


⚡ 性能提醒#

如果文本一长就卡,可能是灾难性回溯。典型危险写法:(a+)+、(a|aa)+、(\w+\s?)*。上线前用性能与安全检测,详见 ReDoS 是什么。


🔧 常见问题(FAQ)#

需要注册吗? 不需要,打开即用,全部免费。
测试文本会上传吗? 不会。匹配在浏览器本地执行,文本不离开你的设备。
支持 Python / Java 的正则吗? 测试器执行的是浏览器(JavaScript)正则。其他语言的差异请用[多语言引擎](https://www.xingdian.net/app/regex/engines/)查看写法与兼容性。
匹配结果可以复制吗? 可以,匹配内容与结果支持一键复制。
怎么知道捕获组对应哪一段? 结果区会按组编号列出内容;用[正则解释器](https://www.xingdian.net/app/regex/explain/)可进一步理解分组含义。
为什么同一个正则第二次结果不对? 多半是带 `g` 的正则对象 `lastIndex` 未重置。新建正则对象或重置 `lastIndex` 即可。
能匹配换行符吗? 开启 `s`(DotAll)让 `.` 匹配换行,或用 `[\s\S]`。
能测试替换结果吗? 测试器专注匹配;替换用[正则替换](https://www.xingdian.net/app/regex/replace/)。

🧠 正则引擎是怎么工作的#

理解引擎原理,能解释很多”为什么匹配成这样”的现象。

大多数语言使用回溯型 NFA 引擎:从左到右尝试匹配,遇到量词或分支时,会先”贪婪”地尽量多匹配,若后续失败再回溯退一步重试。

例如 a+ 对 aaa:

  1. 先吃掉 aaa;
  2. 若后面还要匹配别的东西失败,就退回一个 a 重试。

这就是为什么:

  • 贪婪量词”尽量多”;
  • 懒惰量词(+?)“尽量少”;
  • 某些结构会回溯爆炸(见 ReDoS)。

而 Go 的 RE2、部分工具使用自动机(DFA)引擎,不做回溯,速度快但功能受限(不支持反向引用等)。


🔬 更多实战示例#

11. 匹配十六进制颜色#

#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})\b

12. 匹配版本号#

^\d+\.\d+\.\d+$

13. 匹配带千分位的金额#

^\d{1,3}(,\d{3})*(\.\d{1,2})?$

14. 匹配空白行#

^\s*$

15. 提取方括号内容#

\[([^\]]+)\]

16. 匹配 HTML 标签#

<([a-zA-Z][a-zA-Z0-9]*)\b[^>]*>

17. 匹配日期时间#

^\d{4}-\d{2}-\d{2}[ T]\d{2}:\d{2}(:\d{2})?$

18. 匹配连续重复字符#

(.)\1{2,}

19. 匹配中文姓名#

^[\u4e00-\u9fa5]{2,4}$

20. 匹配不含空格的行#

^\S+$

把这些贴进正则测试器逐个验证,是最快的练习方式。


🧪 用测试器学正则的 5 个练习#

  1. 改一个字符看变化:把 \d{4} 改成 \d{2,4},观察匹配数量变化;
  2. 切换贪婪/懒惰:把 .* 改成 .*?,看结果差异;
  3. 加/去锚点:对比 \d+ 与 ^\d+$;
  4. 开/关 Flags:同一正则加 i、m、s 看效果;
  5. 看捕获组:给正则加括号,观察结果区组的编号与内容。

🧭 更多常见问题#

能保存我写好的正则吗? 工具默认不上传、不保存;建议把正则复制到自己的笔记或代码里留存。
高亮了但捕获组是空的,为什么? 该组未参与匹配(如分支没走到),或括号写在了可选部分里。
能测试超大文本吗? 常见规模没问题;超大文本建议先排除危险正则,避免回溯卡顿。
匹配结果能导出吗? 可以复制匹配内容与结果;需要结构化提取用[正则提取](https://www.xingdian.net/app/regex/extract/)。
为什么中文匹配结果不对? 检查是否开了 `u`(Unicode);中文范围建议用 `[\u4e00-\u9fa5]` 或 `\p{Script=Han}`。
正则里的特殊符号打不出来怎么办? 在输入框正常输入即可;需要匹配符号本身时记得加反斜杠转义。

💬 总结#

正则测试的核心是”即时反馈”:写进去,马上知道对不对、匹配了哪些、捕获组是什么。需要现成的正则,可以看手机号正则和邮箱正则怎么写;想系统学,看正则表达式教程。

立即体验:访问 正则测试器

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

最后更新于 2026-09-13,距今已过 32 天

部分内容可能已过时

相关文章 智能推荐
1
正则替换怎么用 - 在线正则表达式批量替换工具
正则工具 正则替换怎么用?在线正则表达式替换工具支持 $1、$&、$<name> 等替换引用,实时显示替换前后文本与替换次数。含日期改写、去空格、加前缀、键值重排等 10+ 场景示例与 FAQ,浏览器本地处理。
2
星点正则工具完整指南 - 14个在线正则表达式工具导航(2026)
正则工具 星点正则工具系列完整指南:正则测试、替换、提取、生成、解释、可视化、多引擎、ReDoS 检测等 14 个在线正则表达式工具一站式导航。含正则语法速览、按场景选工具、常见工作流与 FAQ,全部浏览器本地处理不上传。
3
正则表达式生成器 - 按条件或示例在线生成正则
正则工具 不会写正则?用正则生成器按条件生成:字符类型、长度、前缀后缀、数字范围、固定结构;也能从示例反推候选正则。在线免费,浏览器本地处理。
4
正则表达式转代码 - 转 JavaScript/Python/Java/Go/PHP
正则工具 正则怎么用到代码里?本文给出 JavaScript、Python、Java、Go、PHP、C# 的写法模板(含转义、Flags、命名组),并介绍在线正则转代码工具,一键得到可复制的代码示例。
5
正则命名捕获组怎么用 - (?<name>) 语法与实例
正则工具 正则命名捕获组 (?<name>...) 怎么用?本文讲清命名组与普通组的区别、各语言写法、提取与替换中的引用方式,并用日期、日志解析等实例说明。附在线正则测试工具。
随机文章 随机推荐
公告
🎉 已升级 2.0 版本,欢迎使用。
分类
标签
站点统计
文章
197
分类
24
标签
747
总字数
334,099
运行时长
0 天
最后活动
0 天前

目录