正则表达式测试工具

针对示例文本测试正则表达式,输入时实时高亮显示匹配结果。查看每个匹配项及其捕获组。

标志参考

g 全局(查找所有匹配项,此工具内部始终应用),i 不区分大小写,m 多行模式(^ 和 $ 匹配行边界),s dotAll 模式(. 匹配换行符),u Unicode 模式,y 粘性模式。

工作原理

你的模式使用浏览器原生的 RegExp 引擎编译,与你的 JavaScript 代码在生产环境中使用的引擎完全相同。这正是在此处测试而非在基于 PCRE 的工具中测试的意义所在:不同方言之间存在差异的语法(后行断言支持、u 标志下 \d 的语义、命名组)在这里的行为与在 Node 或浏览器中完全一致。标志字段会被清理为有效集合(d g i m s u y),测试工具会在内部悄悄添加 g,以便遍历每个匹配项,而不会改变你输入的内容。

匹配在每次按键时运行:测试工具在循环中调用 exec(),收集匹配文本、位置和捕获组。两个保护机制保证其正确性:零长度匹配(来自像 a* 这样的模式)会手动推进索引,以防止循环无限运行;迭代次数上限为 5000 个匹配项。高亮显示是通过遍历一次测试字符串并包裹每个匹配的片段构建的,所有文本会先进行 HTML 转义,因此包含 <script> 的匹配项会以文本形式呈现,而不会作为标记渲染。

一切都保留在你的标签页中;输入时开发者工具的 Network 面板显示零请求,因此包含真实数据的测试字符串永远不会离开你的电脑。

一个值得了解的陷阱:像 (a+)+$ 这样的嵌套量词可能引发灾难性回溯,导致匹配时间在长的、几乎匹配的输入上呈指数级爆炸增长。如果页面在这样的模式下卡死,问题不在于工具,而在于正则表达式本身,它同样会以相同方式卡住你的生产代码。请重写模式,使量化的分组不能以多种方式匹配相同的字符。