ToolConvoyToolConvoyv2.6
DEV

正则表达式测试器 — 在浏览器中实时测试正则表达式

实时测试正则表达式。高亮匹配、查看捕获组、解读模式 —— 完全在浏览器中运行,无上传。

● 本地运行 · 在您的标签页中生成页面加载以来工具发出的网络请求:0 次

正则表达式既是发明过的最强大的字符串处理工具,也是每种编程语言里最常被写错的代码。一个在测试输入上正好匹配预期、在生产中却出现过匹配或欠匹配的正则,是一个视觉测试器几秒钟就能抓到的 bug,也是一个 code review 可能永远注意不到的问题。测试器在上下文中展示每一个匹配 —— 匹配的子串在源文本中高亮、捕获组标注并提取出来、未匹配的文本清晰分隔 —— 让 [a-z]+[a-z]+$ 的区别在模式进入生产之前就显现出来。

正则解释器是这个工具最与众不同的功能。正则语法出了名地写一次完事:写的时候还明白的模式,六个月后要修改时往往变得完全看不懂。解释器把模式拆解成组成它的 token,并为每个 token 写一段通俗易懂的描述:量词、字符类、锚点、分组、选择分支和 lookaround。这让这个工具读正则和写正则一样有用 —— 把同事 PR 里的模式贴进来,点解释,在批准之前先弄明白它做了什么。

引擎选择器解决了最棘手的正则互操作问题:同一个模式在不同语言中可能产生不同匹配,因为正则引擎的实现各不相同。JavaScript 缺少 possessive quantifier 和 lookbehind(ES2018 之前)。Go 的 regexp 包不允许反向引用。Python 的 re 模块处理 Unicode 字符类的方式与 JavaScript 不同。测试器让你在引擎之间切换,查看每个引擎如何解读模式,从而在提交一个本地能用却在 CI 中失败的模式之前就发现跨语言差异。

广告

使用方法

  1. 输入正则表达式

    在模式输入框中输入正则表达式。选择一个引擎:JavaScript(浏览器原生)、PCRE、Python 或 Go。输入时测试器会在任何匹配发生之前内联显示语法错误。

  2. 粘贴测试文本

    把要匹配的文本粘贴到文本面板。编辑模式或文本时,匹配会实时高亮。每个匹配用不同的背景色渲染,重叠的匹配通过视觉区分。

  3. 查看捕获组

    点击任意匹配,在侧边面板中查看完整匹配和每个编号捕获组。命名捕获组会标注其名称。零长度匹配在匹配位置显示为一个细光标条。

常见问题

不同正则引擎之间有什么区别?

JavaScript 引擎使用浏览器内置的 RegExp(ECMAScript 规范,旧浏览器不支持 lookbehind)。PCRE 引擎支持 lookbehind 断言和 possessive quantifier。Python 引擎增加了 `\A`/`\Z` 锚点。Go 引擎不允许反向引用和 lookaround。选择与你目标运行时匹配的引擎。

解释器是如何工作的?

正则解释器把模式按 token 拆解,并为每个组件写出通俗易懂的描述。`^\d{3}-\d{2}-\d{4}$` 会变成「行首,恰好 3 位数字,连字符,恰好 2 位数字,连字符,恰好 4 位数字,行尾」。当你要接手一个不是自己写的正则时,这个工具再合适不过。

为什么我的模式匹配结果和预期不一样?

常见陷阱:缺少行首(^)或行尾($)锚点会导致部分匹配。量词默认是贪婪的(`.*` 会吞掉整段字符串)。像 `[a-z]` 这样的字符类不匹配带重音的字母。测试器会显示完整的匹配范围和任何未匹配的文本,这有助于诊断过匹配或欠匹配。

能保存或分享测试用例吗?

模式和测试文本会被编码到 URL fragment 中,因此收藏页面或分享 URL 就能保留当前状态。没有任何数据被发送到服务器 —— 编码只是纯客户端的 URL fragment 序列化。

支持 Unicode 属性转义吗?

支持 —— `\p{Letter}`、`\p{Number}`、`\p{Script=Greek}` 等 Unicode 属性转义在 JavaScript 引擎(ES2018+)中支持。测试器会根据所选引擎校验语法,并对不支持的转义给出提示。

限制说明

  • 引擎准确性是尽力而为不管选哪种引擎,底层都是浏览器原生的 JavaScript RegExp。不同语言在回溯行为、Unicode 处理和边缘量词语义上的差异会在引擎说明中记录,但不会被模拟。
  • 无法阻止灾难性回溯触发指数回溯的模式可能让浏览器标签页冻结。测试器会对带嵌套量词的模式(例如 `(a+)+b`)给出警告,但不会中断执行。测试可疑模式前先保存工作。
  • 没有替换/替换模式测试器验证匹配和捕获组,但不提供替换模式。要做查找替换测试,请使用代码编辑器的 text-diff 或 string-replace 功能。

平台说明

macOS
BBEdit 和 VS Code 自带用于文件搜索的正则测试器。浏览器工具适合用来测试聊天、邮件或 API 响应里的临时文本。
Linux
命令行测试可以用 `echo 'text' | grep -P 'pattern'` 测 PCRE 正则。浏览器工具额外提供了捕获组可视化器和多引擎切换。
Web
完全在客户端运行。正则和测试文本始终留在你的设备上。
广告
广告