tomai
登录
免费 · 开发者工具

正则表达式测试

实时测试正则:匹配高亮、捕获组分解、替换预览

/ /
常用模式
匹配结果
结果

  
语法速查
\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、$ 语法预览替换结果。g、i、m、s、u、y 六个标志一键切换,内置邮箱、URL、IPv4、日期、十六进制颜色、电话号码等常用模式库和语法速查表。引擎就是 JavaScript 自带的那个,和浏览器里跑的完全一致,测试通过就是上线效果。适合前端开发者、测试人员和一切处理文本的人。

这款工具能做什么

  • 🔦 输入即实时高亮所有匹配
  • 🧩 编号与命名捕获组逐个分解,标注匹配位置
  • 🔁 使用 $1 / $ 语法预览替换结果
  • 🚩 支持 g、i、m、s、u、y 标志
  • 📚 内置模式库:邮箱、URL、IPv4、日期、颜色、电话
  • 📖 内置语法速查表

什么时候会用到

  • 为表单字段编写校验正则
  • 排查正则匹配过多或过少的问题
  • 编写依赖捕获组的文本处理脚本
  • 使用社区现成模式之前先验证一遍

隐私:模式和测试文本只在浏览器本地运算,不上传服务器,也不会被记录。免费使用。

相关工具