Toolbox Hub
所有工具

Regex Tester

Test regular expressions

Test regular expressions 在您的浏览器中本地运行

About the

正则表达式测试器针对您自己的示例文本运行 JavaScript 正则表达式,并在您键入时突出显示每个匹配项,因此您可以观察模式成功或失败,而不是猜测。除了突出显示之外,它还列出了每个匹配项及其起始位置和捕获组,这部分实际上告诉您组 2 是您想要的值还是空字符串。三个错误导致大多数损坏的正则表达式,所有三个错误都在这里可见:一个贪婪的量词悄悄地吞下了比预期更多的文本,一个与任何内容匹配的未转义点,以及一个在第一次命中后停止搜索的丢失的全局标志。

Where people use the

  • 针对少量真实日志行调试日志解析模式。
  • 在将其连接到表单之前制定电话或邮政编码规则。
  • 从粘贴的文本块中提取订单号或 ID。
  • 通过更改一个字符并观察突出显示的移动来了解量词的行为方式。

How to use the

  1. 1

    粘贴您要测试的文本

    使用真实的样本而不是发明的样本。实际数据中的边缘情况会破坏模式,因此也应包含一条不匹配的行。

  2. 2

    写出模式

    输入不带斜杠的表达式,例如 [a-z]+ 而不是 /[a-z]+/。标志是单独的切换。

  3. 3

    打开或关闭标志

    g 查找每个匹配项而不是在第一个匹配项处停止,i 忽略大小写,m 使锚点按行工作,s 让点跨越换行符,u 启用完整 Unicode 模式,y 锚点匹配到 lastIndex。

  4. 4

    阅读比赛表

    每个结果都会显示匹配的文本、其字符偏移量和每个捕获组。意外的空组通常意味着可选量词不匹配任何内容。

  5. 5

    复制完成的图案

    当突出显示看起来正确时,复制表达式并将其粘贴到代码中,同时记住也要携带标志。

提示和最佳实践

  • 每个模式测试一条规则。执行三项工作的正则表达式不可读且无法调试。
  • 包括不得匹配的行并确认它保持不突出显示。
  • 更喜欢诸如年、月、日之类的命名组,而不是编号组,因此当您下个月返回时,该模式仍然有意义。

常见问题

这使用哪种正则表达式风格?

JavaScript,通过浏览器自己的 RegExp 引擎。语法接近 PCRE 和 Python 的 re 模块,但并不完全相同。命名组、lookahead、lookbehind 和 Unicode 属性转义了当前浏览器中的所有工作。

为什么我的模式匹配的文本比我预期的要多得多?

因为量词默认是贪婪的。像 .* 或 [0-9]+ 这样的东西会尽可能多地消耗,同时仍然允许模式的其余部分匹配。加个问号让它变得懒惰,所以.*?或[0-9]+?一有机会就停下来。

为什么我只得到一个结果?

全局标志已关闭。如果没有 g,引擎将返回第一个匹配项并停止。切换 g 以收集输入中的每个匹配项。

为什么我的锚点在第二行不起作用?

默认情况下,插入符号和美元锚点指的是整个字符串的开头和结尾,而不是每一行。启用 m 标志以使它们具有线路感知能力。

我的测试数据发送到任何地方了吗?

不会。匹配发生在您的浏览器中,带有内置的 RegExp 对象。没有上传任何内容,这就是为什么您可以安全地粘贴真实的日志行或配置片段。

我可以用它来验证表单上的输入吗?

您可以在此处开发模式,但始终在服务器上再次验证。客户端正则表达式为用户提供了便利,而不是安全控制,因为它可以完全跳过。

相关工具