正则表达式编辑、匹配高亮与捕获组展示
正则测试工具让你交互式地编辑、调试和验证正则表达式——粘贴文本、输入 pattern,匹配结果实时高亮,不用反复翻文档。
本工具使用 JavaScript 正则方言(和浏览器、Node.js 一致),支持所有标准 flag(g、i、m、s、u、y),高亮每个匹配,并把每个捕获组拆出来,方便你验证复杂 pattern 的结构。
Pattern: ([a-z0-9._%+-]+)@([a-z0-9.-]+\.[a-z]{2,})
Flags: gi
Text: Contact [email protected] or [email protected]Match 1: [email protected]
Group 1: alice
Group 2: toolcozy.com
Match 2: [email protected]
Group 1: bob
Group 2: example.orgPattern: \d+
Flags: g
Text: Order 12 of 350 shipped on day 7Matches: 12, 350, 7JavaScript / ECMAScript。意味着现代浏览器里 lookbehind((?<=…))可用,命名捕获组((?<name>…))可用,但 PCRE 特有的递归、占有量词等不支持。
g 找出所有匹配;i 大小写不敏感;m 让 ^ 和 $ 按行匹配;s 让 . 也能匹配换行;u 启用完整 Unicode(含代理对和 \p{} 属性类);y 粘性匹配(只在 lastIndex 处尝试)。
常见原因:忘了加 g(只显示第一处);从 HTML 复制时反斜杠被转义了(pattern 框里用单反斜杠就行);贪婪和惰性量词混淆;或者测试文本里其实没有那东西(多余空格、智能引号等)。
会。像 (a+)+ 这种嵌套量词配上长输入会触发灾难性回溯——引擎要尝试指数级的组合。本工具里测试文本一般不长不会出事,但千万别在生产环境对用户输入跑这种 pattern。
支持。(?<year>\d{4}) 就是一个命名组,同时也有数字索引,老代码里 match[1] 仍然能用。