Regex Pro 是对标 regex101 的进阶版浏览器内正则工具——pattern 实时语法着色、AST 中文解释、命名组捕获、替换预览、大文本 grep 模式,全部本地运行,不上传服务器。
普通”正则测试”工具的痛点:
(?<=\$)(?:\d{1,3},)*\d{1,3}(?:\.\d{2})? 这种没解释根本读不下去$1 / $<name> 究竟会输出什么,要打开 console 才能验证(a+)+ 跑长串就得强制刷新Regex Pro 把上述都拍平了。
| 能力 | 说明 |
|---|---|
| 语法着色 | pattern 输入框上方覆盖层把元字符 / 量词 / 分组 / 字符类 / 转义按颜色区分,调试一眼定位 |
| AST 解释 | 解析为抽象语法树后逐节点输出中文描述,分组/断言带层级缩进 |
| 实时匹配 | 输入即跑,状态栏显示命中数 + 耗时(毫秒) |
| 命名捕获 | (?<name>...) 在匹配列表里按名字展示,对应 $<name> 替换模板 |
| 替换预览 | 独立 tab,$1 / $& / $<name> / $\`` / $’` 全套支持 |
| 大文本降级 | >200KB 自动切换为 grep 列表模式,每条命中带 ±30 字符上下文 |
| Worker 超时 | 匹配在 Web Worker 跑,2.5s 不返回就 terminate,主线程永不卡 |
| 一键导出 | 复制为 JS / Python / Java 代码片段(自动处理转义和命名组方言差异) |
适用:
不太适用:
ripgrep / grep -P 这类原生工具整套工具完全本地运行,不发起任何网络请求。pattern / 测试文本 / 替换模板都只存在浏览器 localStorage 和当前页面 DOM 里,刷新关闭就消失。可放心粘贴日志、源码、机密 ID 做调试。
"正则测试"是轻量快测:粘正则 + 文本看高亮,速度优先。Regex Pro 多了:① 语法着色——pattern 输入框里量词/分组/字符类按颜色区分;② AST 中文解释面板——逐段翻译成人话;③ 替换模板预览;④ 大文本支持(>200KB 自动切换 grep 列表模式);⑤ Web Worker 超时保护(避免灾难性回溯卡死)。日常快测用 regex,吃不下的复杂场景上 regex-pro。
当前 v1 是 JavaScript / ECMAScript 方言(浏览器原生 RegExp)。常用语法 \d \w \s / 字符类 / 量词 / 命名捕获 (?<name>...) / 回引 \k<name> / 前后瞻 (?=) (?!) (?<=) (?<!) 都支持。不支持的 PCRE 特性:原子组 (?>...)、占有量词 a++、递归 (?R)、条件分组 (?(1)yes|no)。如果你的 pattern 来自 Python / Java / PHP,多数语法兼容,但 Python 命名组 (?P<name>) 需要先改成 JS 写法。
每一行是 AST 上的一个节点。最左侧的点表示嵌套深度——分组 (...)、断言 (?=...)、交替分支会让子节点缩进一级。读法:从上到下、从浅到深,配合右侧"原始片段"列对照 pattern 中的位置。比如 (\d{4})-(\d{2}) 会展开成"第 1 个捕获组 → 数字(重复 4 次)"和"第 2 个捕获组 → 数字(重复 2 次)"。
不会页面卡死,但会自动降级显示。≤200KB:pattern 输入旁的测试文本框做完整内联高亮;>200KB:关闭内联高亮,只在下方"匹配列表"里展示每个命中带 ±30 字符的上下文,点击列表项可在原 textarea 里定位。匹配引擎在 Web Worker 里跑,2.5 秒不返回就 terminate 重启 Worker,主线程永远不卡。
都是 JavaScript String.replace 的标准替换占位符:$& 是整个匹配、$1–$99 是第 N 个捕获组、$<name> 是命名捕获组、$$ 是字面 $。另外还有两个 less-used 的:dollar+反引号引用匹配之前的内容,dollar+单引号引用匹配之后的内容。例:(\d{4})-(\d{2}) 配 $1年$2月 把 2026-05 替换成 2026年05月;命名组版本 $<year>年$<month>月 等价。
红条直接显示浏览器抛的 SyntaxError,常见原因:① 未闭合的括号/字符类——(abc 或 [a-z;② 量词位置错误——*abc 开头量词没东西可重复;③ \u/\x 后跟的不是合法 hex;④ 命名组名字重复或为空。建议参考"参考手册"折叠面板里的语法元素列表,点击即插入。
形如 (a+)+、(a|a)+、(.*)* 这种嵌套无界量词碰到长串不匹配输入时,回溯路径会指数级爆炸——几秒到几分钟不出结果。Regex Pro 的 Worker 2.5 秒超时只是兜底,治本要改写 pattern:① 把嵌套量词扁平化(a+ 代替 (a+)+);② 用占有量词或原子组(JS 不支持,可改业务逻辑);③ 用具体字符类代替 .*([^"]* 代替 .* 提取引号内容)。Cloudflare 2019 年宕机就是这个问题。
能。pattern 输入框旁有 JS / Py / Java 三个复制按钮:JS 复制 /pattern/flags 字面量;Python 复制带 import re 和 re.findall 的片段,且自动把 (?<name>) 改成 (?P<name>);Java 复制 Pattern.compile(...) 调用并把反斜杠/双引号转义。注意:Python / Java 的字符类边界、Unicode 行为略有差异,导出后建议用一组真实数据验证一次。