Regex 解析测试器

实时高亮匹配结果,解释正则语义,并生成示例字符串

/ /
0 个匹配
匹配结果将在此处高亮显示。
暂无匹配。
  • 模式解释将在此处显示。

                

如何使用

第 1 步

输入模式

输入正则表达式并选择相关标志。

第 2 步

测试文本

实时查看高亮的匹配结果和捕获组。

第 3 步

解释与生成

查看模式解释并生成示例字符串。

常见问题

正则表达式测试工具是否支持 g、i、m、s 和 u 等标志?

支持。你可以在测试工具中切换全局、忽略大小写、多行、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 组始终代表整个匹配。

什么时候需要 u(Unicode)标志?

只要模式或文本涉及非 ASCII 字符,就应加上 u 标志:它使 \w 和 \d 遵循 Unicode 规则,支持像 \p{L} 和 \p{Script=Arabic} 这样的属性转义,并将 emoji 视为单个字符。如果没有 u,UTF-16 代理对可能会被点号匹配从中间拆开。

^、$ 以及 m 和 s 标志是如何相互作用的?

默认情况下,^ 和 $ 锚定整个字符串,而 . 会跳过换行符。m(multiline,多行)标志让 ^ 和 $ 改为匹配每一行的边界,s(dotAll)标志则允许 . 跨越换行符。解析日志时常用的技巧是把两个标志一起使用:/error.*timeout/gms。

这个测试工具使用哪种正则表达式方言?

它运行的是你浏览器中的 JavaScript 引擎,因此遵循 ECMAScript(ECMA-262)的正则语义——与生产环境 JS 中 String.prototype.match 所使用的引擎相同。注意它与 PCRE 或 Python 的差异:JavaScript 不支持 \K 和递归,后行断言(lookbehind)直到 ES2018 才可用。为 Perl 或 PCRE 编写的模式可能需要稍作调整。

{-- * External Resources Component(#18 Phase 3b 内容佐证工程) * 工具页「权威引用」区块:RFC / W3C / WHATWG / ECMA / IANA / 官方规范站 / Wikipedia。 * * - 接受 :slug 属性 → 经 config/tool-sources.php 家族矩阵渲染该工具的权威引用 * - slug 未命中映射时不渲染(无权威来源的工具静默跳过) * - 链接 title 保持英文(引用源专名);description 经 * common.resources.descriptions.{key} 本地化,lang 未命中回退英文(线上不裸奔) * - 链接保持 dofollow(rel="noopener noreferrer") * * @param string|null $slug --}}