正则表达式测试工具
实时测试 JavaScript 正则,支持全部修饰符(g i m s u y d):高亮匹配、捕获组和命名组、索引以及替换预览,并有防卡死的 Worker 保护。
在后台 Worker 中使用浏览器的 JavaScript(ECMAScript)正则引擎。PCRE/Python 中的占有量词、行内 (?i) 修饰符等语法可能不受支持。
什么是 正则表达式测试?
在你输入的同时,针对文本测试 JavaScript 正则表达式。匹配项会被高亮,表格显示每个匹配及其位置、编号捕获组和命名捕获组(使用 d 修饰符时还有分组索引),可选的替换预览会显示 String.replace 的结果。模式在后台 Worker 中运行,1.5 秒后会被终止,因此灾难性的模式不会让页面卡死。
如何使用 正则表达式测试
- 在正则表达式中输入模式(不带斜杠)。
- 勾选你需要的修饰符:g、i、m、s、u、y、d。
- 把要搜索的文本粘贴到测试字符串中——匹配项会自动更新。
- 勾选将匹配项替换为…并输入替换文本(可使用 $1、$<name>、$& 等)来预览结果。
示例
Pattern (?<y>\d{4})-(\d{2}) with flags g, text "a 2024-05 b 1999-12", replacement $2/$<y> 2 match(es) · replaced: a 05/2024 b 12/1999
何时使用 正则表达式测试
适用于为 JavaScript、TypeScript 和 Node.js 构建和调试正则,以及用于校验规则或查找替换。其他引擎(PCRE、Python、Java、.NET、POSIX)在语法和功能上有差异——例如占有量词、(?i) 这样的内联修饰符和 \A/\Z 锚点都不可用——所以如果目标是它们,也请在对应环境中测试。
正则表达式测试 的工作原理
模式在 Web Worker 中通过 new RegExp(pattern, flags) 编译。使用 g 或 y 时,工具循环调用 exec() 并最多收集 1,000 个匹配(空匹配会按一个码位前进,以避免死循环);不使用它们时只报告第一个匹配,与 JavaScript 完全一致。每个匹配都会记录其起止索引、捕获组、命名组,以及在使用 d 修饰符时每个分组的 indices。替换预览运行 text.replace(regex, replacement)。如果 Worker 在 1,500 毫秒内没有响应,就会被终止并显示超时消息。
常见用例
- 调试表单输入的校验模式
- 用命名捕获组提取数据
- 在对文件执行之前预览查找替换的结果
- 了解 m、s、u 等修饰符如何改变匹配
- 检查模式是否存在灾难性回溯
常见问题
为什么我的正则只找到第一个匹配?
没有 g(全局)修饰符时,JavaScript 在第一个匹配之后就会停止。勾选 g 即可列出所有匹配。
d 修饰符有什么作用?
它会为每个匹配添加 indices,给出每个捕获组的起止位置。工具会在每个分组旁边显示它们。
遇到 (a+)+$ 这样的灾难性模式会怎样?
运行它的 Worker 会在 1.5 秒后被终止,你会看到超时消息,而不是一个卡死的标签页。
和 PCRE 或 Python 的正则兼容吗?
基本语法大体兼容,但并不完全。它使用的是你浏览器的 ECMAScript 引擎。