Regex 解析测试器
实时高亮匹配结果,解释正则语义,并生成示例字符串
- 模式解释将在此处显示。
如何使用
输入模式
输入正则表达式并选择相关标志。
测试文本
实时查看高亮的匹配结果和捕获组。
解释与生成
查看模式解释并生成示例字符串。
常见问题
支持。你可以在测试工具中切换全局、忽略大小写、多行、dotAll、unicode 和 sticky 等标志。
解析器会逐个读取你模式中的记号,并为锚点、字符类、分组和量词生成通俗易懂的解释。
可以。示例生成器会根据你当前的模式创建一个有代表性的字符串,方便你快速验证表达式是否符合预期。
像 .* 这样的贪婪量词会尽可能多地消费字符,然后进行回溯;它的懒惰版本 .*? 则在第一次匹配处停止。对于文本 say "hi" bye,模式 "..*" 会捕获整行,而 ".*?" 只捕获 hi。贪婪是默认行为——在任何量词后面加上 ? 即可使其变为懒惰模式。
圆括号用于捕获:用 (\d{4})-(\d{2}) 匹配 2026-09-19 会得到第 1 组为 2026、第 2 组为 09,而在替换模式中 $1 会复用捕获到的文本。像 (?<year>\d{4}) 这样的命名分组在复杂模式中可读性更好。JavaScript 按左括号的出现顺序对分组编号,从 1 开始——第 0 组始终代表整个匹配。
只要模式或文本涉及非 ASCII 字符,就应加上 u 标志:它使 \w 和 \d 遵循 Unicode 规则,支持像 \p{L} 和 \p{Script=Arabic} 这样的属性转义,并将 emoji 视为单个字符。如果没有 u,UTF-16 代理对可能会被点号匹配从中间拆开。
默认情况下,^ 和 $ 锚定整个字符串,而 . 会跳过换行符。m(multiline,多行)标志让 ^ 和 $ 改为匹配每一行的边界,s(dotAll)标志则允许 . 跨越换行符。解析日志时常用的技巧是把两个标志一起使用:/error.*timeout/gms。
它运行的是你浏览器中的 JavaScript 引擎,因此遵循 ECMAScript(ECMA-262)的正则语义——与生产环境 JS 中 String.prototype.match 所使用的引擎相同。注意它与 PCRE 或 Python 的差异:JavaScript 不支持 \K 和递归,后行断言(lookbehind)直到 ES2018 才可用。为 Perl 或 PCRE 编写的模式可能需要稍作调整。