正则表达式测试
实时测试正则:匹配高亮、捕获组分解、替换预览
\d \w \s数字、单词字符、空白^ $ \b开头、结尾、单词边界* + ? {n,m}0+、1+、可选、区间(…) (?:…) (?<name>…)捕获、非捕获、命名[abc] [^abc] [a-z]任一、排除、范围a|b (?=…) (?!…)或、先行断言被关住的灾难性回溯
形如 (a+)+$ 的嵌套量词会让匹配器探索指数级路径——经典 ReDoS 陷阱:
- 本测试器把你的正则放进带步数预算的 Worker;失控匹配会被中止并报告,而不是冻死标签页。
- 看到「已中止」就说明这个正则上生产同样危险——服务器超时救不了二次方引擎循环。
- 常见修法:让内层分组无歧义、两端加锚点、用字符类替代贪婪嵌套。
这个测试器如何安全地运行正则
匹配实时高亮显示
模式、测试文本与替换词随输入同步更新:匹配以交替颜色高亮,计数即时刷新,替换预览支持 $1 与 $<name> 具名组语法。
捕获组带位置信息
每个匹配都会展开为带编号与名称的捕获组,连同取值与字符位置一起列出,上线之前就能看清模式的哪一部分捕获了什么。
标志、常用库与语法参考
g、i、m、s、u、y 六个标志一键切换,六条现成模式覆盖邮箱、URL、IPv4、日期、十六进制颜色与电话号码,语法参考逐项讲解锚点、量词、分组与环视。
常见问题
这里用的是哪种正则风格?
浏览器内置的 JavaScript(ECMAScript)引擎。大部分语法与 PCRE 通用,但少数有别——例如没有独占量词,后行断言需要较新的浏览器。你在这里测试的模式,行为与在 JS 代码中完全一致。
我的文本会被发送到哪里吗?
不会。匹配、分组与替换都使用浏览器原生 RegExp 在本地运行,因此你的模式和测试数据绝不离开页面,也可离线使用。
正则会不会卡死页面?
病态模式(灾难性回溯)可能变慢,但只影响你自己的标签页。我们会推进零宽匹配,并将结果上限设为 1 万,以保持界面响应。对长文本请优先使用具体模式,避免 (a+)+ 这类嵌套量词。
为什么同一个正则在某些输入上会卡死?
回溯成本取决于输入形状而不只是长度:aaaa…b 撞上 (a+)+b 会爆炸,aab 则瞬间完成。攻击者专门构造这种病态字符串——任何面向用户的正则上线前,请先用长同字符串测一遍。
相关工具
什么是正则表达式测试器?
正则表达式是文本查找与替换的利器,也是编程里最容易出错的工具之一——多一个反斜杠、少一个量词,匹配结果就完全不一样,纸上推演再正确,碰到真实数据也常翻车。这个测试器让你亲眼看到模式实际做了什么:测试文本中的每个匹配都会实时高亮,编号和命名捕获组逐个分解并标注位置,还能用 $1、$
这款工具能做什么
- 🔦 输入即实时高亮所有匹配
- 🧩 编号与命名捕获组逐个分解,标注匹配位置
- 🔁 使用 $1 / $
语法预览替换结果 - 🚩 支持 g、i、m、s、u、y 标志
- 📚 内置模式库:邮箱、URL、IPv4、日期、颜色、电话
- 📖 内置语法速查表
什么时候会用到
- 为表单字段编写校验正则
- 排查正则匹配过多或过少的问题
- 编写依赖捕获组的文本处理脚本
- 使用社区现成模式之前先验证一遍
隐私:模式和测试文本只在浏览器本地运算,不上传服务器,也不会被记录。免费使用。