正则表达式测试器

实时测试正则匹配,查看捕获分组

浏览器内运算Regex Tester排错型05文本与对比

什么是正则表达式测试器

正则表达式测试器在输入时即时执行匹配,高亮命中片段并列出每个捕获分组的位置与内容,支持 g、i、m、s、u 等标志。执行使用浏览器原生正则引擎,测试文本不会上传。

怎么用正则表达式测试器

  1. 1输入正则表达式(不需要写两侧的斜杠)。
  2. 2勾选需要的标志位,全局匹配请勾 g。
  3. 3在测试文本框粘贴样本内容,匹配结果会即时高亮。
  4. 4查看下方分组列表,确认捕获内容与下标是否符合预期。

在代码里怎么实现?

一次性操作用上面的工具,重复性工作建议固化到脚本或项目里。

const re = /(\d{4})-(\d{2})-(\d{2})/g;

for (const m of text.matchAll(re)) {
  console.log(m[0], m[1], m[2], m[3], m.index);
}

常见错误与排查

现象成因修复
只匹配到第一处没有加 g 标志,正则默认只返回第一个匹配。勾选 g 标志(对应代码里的 /g)。
. 匹配不到换行默认情况下点号不匹配换行符。勾选 s(dotAll)标志,或改用 [\s\S]。
页面卡住或匹配极慢嵌套量词导致灾难性回溯,例如 (a+)+b。避免嵌套量词,改写为更确定的模式或加上边界限制。

常见问题

这里的正则语法和 Python、Java 一样吗?+

不完全一样。本工具使用 JavaScript 正则引擎,与 Python、Java、PCRE 在命名分组语法、后行断言支持与转义细节上存在差异。把在这里调好的正则搬到其他语言时,建议再用目标语言验证一次。

为什么我的正则在这里能匹配,在后端却不行?+

常见原因有三个:后端使用了不同的正则引擎;字符串在传输过程中被转义了一次(\d 变成 \\d);以及标志位没有同步设置。排查时先打印后端实际收到的模式字符串。

相关工具

全部工具