Regex Tester
Test regular expressions
Test regular expressions 在您的浏览器中本地运行
About the
正则表达式测试器针对您自己的示例文本运行 JavaScript 正则表达式,并在您键入时突出显示每个匹配项,因此您可以观察模式成功或失败,而不是猜测。除了突出显示之外,它还列出了每个匹配项及其起始位置和捕获组,这部分实际上告诉您组 2 是您想要的值还是空字符串。三个错误导致大多数损坏的正则表达式,所有三个错误都在这里可见:一个贪婪的量词悄悄地吞下了比预期更多的文本,一个与任何内容匹配的未转义点,以及一个在第一次命中后停止搜索的丢失的全局标志。
Where people use the
- 针对少量真实日志行调试日志解析模式。
- 在将其连接到表单之前制定电话或邮政编码规则。
- 从粘贴的文本块中提取订单号或 ID。
- 通过更改一个字符并观察突出显示的移动来了解量词的行为方式。
How to use the
- 1
粘贴您要测试的文本
使用真实的样本而不是发明的样本。实际数据中的边缘情况会破坏模式,因此也应包含一条不匹配的行。
- 2
写出模式
输入不带斜杠的表达式,例如 [a-z]+ 而不是 /[a-z]+/。标志是单独的切换。
- 3
打开或关闭标志
g 查找每个匹配项而不是在第一个匹配项处停止,i 忽略大小写,m 使锚点按行工作,s 让点跨越换行符,u 启用完整 Unicode 模式,y 锚点匹配到 lastIndex。
- 4
阅读比赛表
每个结果都会显示匹配的文本、其字符偏移量和每个捕获组。意外的空组通常意味着可选量词不匹配任何内容。
- 5
复制完成的图案
当突出显示看起来正确时,复制表达式并将其粘贴到代码中,同时记住也要携带标志。
提示和最佳实践
- 每个模式测试一条规则。执行三项工作的正则表达式不可读且无法调试。
- 包括不得匹配的行并确认它保持不突出显示。
- 更喜欢诸如年、月、日之类的命名组,而不是编号组,因此当您下个月返回时,该模式仍然有意义。
常见问题
这使用哪种正则表达式风格?
JavaScript,通过浏览器自己的 RegExp 引擎。语法接近 PCRE 和 Python 的 re 模块,但并不完全相同。命名组、lookahead、lookbehind 和 Unicode 属性转义了当前浏览器中的所有工作。
为什么我的模式匹配的文本比我预期的要多得多?
因为量词默认是贪婪的。像 .* 或 [0-9]+ 这样的东西会尽可能多地消耗,同时仍然允许模式的其余部分匹配。加个问号让它变得懒惰,所以.*?或[0-9]+?一有机会就停下来。
为什么我只得到一个结果?
全局标志已关闭。如果没有 g,引擎将返回第一个匹配项并停止。切换 g 以收集输入中的每个匹配项。
为什么我的锚点在第二行不起作用?
默认情况下,插入符号和美元锚点指的是整个字符串的开头和结尾,而不是每一行。启用 m 标志以使它们具有线路感知能力。
我的测试数据发送到任何地方了吗?
不会。匹配发生在您的浏览器中,带有内置的 RegExp 对象。没有上传任何内容,这就是为什么您可以安全地粘贴真实的日志行或配置片段。
我可以用它来验证表单上的输入吗?
您可以在此处开发模式,但始终在服务器上再次验证。客户端正则表达式为用户提供了便利,而不是安全控制,因为它可以完全跳过。