输入测试字符串即可查看高亮匹配。
无匹配。
Critique this regex for catastrophic backtracking and RE2 compatibility, then propose a stricter version with tradeoffs: `//gi` Matches found: (none)
功能说明
用任意文本实时测试一个 JavaScript 正则表达式——边输入边出结果。输入模式,切换六个 flag 中的任意一个(g global、i 忽略大小写、m 多行、s dotAll、u unicode、y sticky),工具会列出每个匹配项及其索引和捕获分组,在测试字符串中高亮全部命中,并展示可直接复制的 /pattern/flags 字面量。
它使用你引擎的原生 RegExp——与你的代码将得到的语义完全相同——并以引擎自身的错误信息报告无效模式(例如 missing terminating ] for character class),而不是一句笼统的失败。匹配上限为 2000 个;零宽匹配会被检测出来并显示为细条标记,而不是让循环挂死。100% 在浏览器中运行。
使用方法
- 点击工具栏中的预设——Email、URL、Date、Hex color 或 Capture——载入现成的模式、flag 组合和示例文本。每个预设都显式设置全部六个 flag,因此切换预设不会残留过期的 flag。
- 在模式字段输入你的模式(显示在
/分隔符之间,激活的 flags 实时附加在后)。点击区块标题中的 Copy 复制完整的/pattern/flags字面量。 - 切换六个 Flags 中的任意一个;每个开关都显示名称和一行提示(例如
sdotAll - “. also matches newlines”)。默认为g+i。 - 在测试字符串中输入或粘贴文本——行标签实时显示匹配数。
- 观察匹配预览:每个命中都有描边;零长匹配显示为细条,你能看到它们落在哪里。
- 阅读匹配结果:每个匹配一张卡片,含
#n @ index、匹配到的文本,以及每个捕获分组([1]、[2]、…),未参与的分组显示(undefined)。 - 点击 Clear(工具栏)一键重置模式、flags 和测试字符串。
- 输出区下方,提示栏可复制一个基于你实时数值预填的 AI 提示词——Critique & improve(检查模式是否存在灾难性回溯)或 Generate Python tests(根据当前匹配编写
re单元测试)。
示例
以下结果通过运行工具的确切匹配循环验证(与 island 相同的 RegExp 构造和 exec 遍历),基于内置预设:
Email 预设 /[\w.+-]+@[\w-]+\.[\w.]+/gi 作用于 Contact ada@example.com or bob@test.co.uk today.
1. "ada@example.com" @ 8
2. "bob@test.co.uk" @ 27
Capture 预设 /(\w+)@(\w+)/g 作用于 ada@example bob@test —— 每个匹配都列出分组:
1. "ada@example" @ 0 → [ada, example]
2. "bob@test" @ 12 → [bob, test]
Hex color 预设 /#(?:[0-9a-f]{3}|[0-9a-f]{6})\b/gi 作用于 Brand #3b82f6, accent #38BDF8, short #fff.
1. "#3b82f6" @ 6
2. "#38BDF8" @ 22
3. "#fff" @ 37
不带 g flag —— 只报告第一个匹配。模式 /\d{4}-\d{2}-\d{2}/ 作用于 Shipped 2026-08-15, due 2026-09-01. → 1. "2026-08-15" @ 8(带 g 时两个日期都匹配:@ 8 和 @ 24)。
零宽模式 /\b/g 作用于 ab → 两个空匹配,位于 @ 0 和 @ 2,在预览中渲染为细条标记。
补充说明
- 私密: 匹配完全在你的浏览器中运行;你粘贴的任何内容都不会被上传。
- 方言是 ECMAScript(
RegExp)。后行断言、命名分组和u模式属性只要你的浏览器支持就能用——工具不做任何额外限制。 y(sticky)flag 使匹配从lastIndex开始,因此粘性模式在文本未对齐时常常得到零个匹配——这是 flag 在正常工作,不是 bug。- 空的测试字符串显示提示而非预览;无效模式保留文本可见,并在下方显示引擎的错误信息。
- 相关工具: Regex Explainer、Find & Replace、Text Diff Viewer