工具
JavaScript 正则测试工具——匹配、捕获与替换
调试你自己的 JavaScript 正则:实时高亮匹配、编号与命名捕获组(含偏移)、替换模板预览、JSON/CSV 导出——Worker 超时保护让灾难性回溯不会卡死页面。
表达式
处理地点:匹配与替换全部在此浏览器标签页内完成——表达式与文本不发送、不留存、不写入任何链接,关闭标签页即丢弃。
匹配结果
高亮预览表达式已运行,但在这段文本中没有匹配。
| # | 位置 | 匹配内容 | 捕获组 |
|---|
替换
与日志脱敏工具的区别
日志脱敏工具跑的是一组固定规则——粘贴文本,它标出并替换已知的凭证形态。本工具用来调试你自己写的表达式:输入任意 JavaScript 正则、勾选 flags,就能看到它实际匹配什么、产生哪些捕获组(编号与命名,含起止偏移),以及替换模板会输出什么。
语义即浏览器语义:匹配在 Web Worker 里跑真实的 RegExp 引擎,结果与你的代码一致——包括 g 开关的差异、y 粘性锚定和 u 码点行为。替换走 String.prototype.replace,$1、$<name>、$&、$$、$`、$' 与线上行为完全相同。表达式若陷入灾难性回溯,Worker 会在 1.5 秒后被强制中止,页面不会卡死。
常见问题
这里用的是哪种正则语法?
就是你浏览器里的 JavaScript 引擎——与你的代码运行的是同一个 RegExp。支持 g、i、m、s、u、y、d 标志;lookbehind、命名组、Unicode 集合在浏览器支持的范围内都可用。
为什么会提示「可能存在灾难性回溯」?
匹配在 Web Worker 中执行,上限 1.5 秒。(a+)+ 这类嵌套量词或重叠分支在特定输入上会指数级爆炸——超时后 Worker 被强制中止,页面保持响应。简化表达式或缩短文本后再试。
替换模板支持哪些写法?
原生 String.prototype.replace 的占位符:$1…$99 对应编号组,$<name> 对应命名组,$& 是整个匹配,$` 与 $' 是匹配前/后的文本,$$ 输出字面美元符号。
取消勾选 g 后结果为什么变了?
没有 global 标志时 JavaScript 只返回第一个匹配——String.replace 也只替换那一处。匹配列表、高亮和替换预览都严格遵循这个语义,所见即你的代码所得。
我的文本会被上传或保存吗?
不会。编译、匹配、替换全部在这个浏览器标签页内完成——不发送到任何服务器、不落盘、不写进链接,关闭标签页即丢弃。