如何使用 RegExr 测试和调试正则表达式
更新时间
RegExr 是一个在线正则表达式测试器,打开 regexr.com 就能用,无需安装。它适合在写正则时快速验证匹配结果、看懂每一段语法的作用,以及从社区模式库里找现成写法参考。根据网站自身描述,它支持语法高亮、PHP / PCRE 与 JavaScript 两种引擎、上下文帮助、速查表和可搜索的社区模式。如果你的正则要在特定语言里跑,先确认引擎是否对得上,再开始测试。
基本操作流程
- 输入正则表达式:在表达式输入区写下你的 pattern,例如
\d{3}-\d{4}。RegExr 会实时对表达式做语法高亮,括号、字符类、量词等结构用不同颜色区分,写错时也更容易一眼看出来。 - 输入测试文本:在文本区粘贴或输入要被匹配的内容,比如一段日志、一段 HTML 或几行示例数据。
- 查看匹配结果:命中的部分会在文本中高亮显示,匹配列表会列出每一处命中及其内容。这样你能直接判断“该匹配的有没有匹配上、不该匹配的有没有被误伤”。
- 逐段调整:改动表达式后结果即时刷新,可以反复试到符合预期。
借助辅助功能理解语法
- 上下文帮助:把光标放在表达式的某个片段上,会显示该语法的说明,适合边写边查,不用切到别的文档。
- 速查表(Cheat Sheet):集中列出常用语法,比如字符类、锚点、量词、分组,忘记写法时直接查。
- 语法高亮:颜色区分结构,能帮你发现括号不配对、转义写错这类问题。
用社区模式库找参考写法
RegExr 提供可搜索的社区模式(Community Patterns)。当你要写一个常见但不好下手的正则,比如匹配邮箱、URL、日期格式,可以先搜关键词,看别人怎么写,再复制到表达式区按自己的数据调整。注意社区写法质量参差,拿来后一定要用你自己的测试文本验证,不要直接上生产。
选择引擎
RegExr 支持 PHP / PCRE 和 JavaScript。不同引擎在部分语法上行为不同,比如某些断言、命名分组、Unicode 属性的写法。测试前先想清楚这段正则最终跑在哪里:
- 跑在浏览器或 Node.js 里 → 选 JavaScript。
- 跑在 PHP 的
preg_*函数里 → 选 PCRE。
引擎选错,测试通过不代表实际能用。
常见卡点
- 只测“能匹配”,不测“不匹配”:除了准备应该命中的样本,也放几段不该命中的文本,确认没有过度匹配。
- 忽略贪婪与懒惰:
.*默认贪婪,可能一口气吃到行尾。用.*?或更精确的字符类收窄范围,再观察高亮变化。 - 忘记锚点:想匹配整行却没加
^$,结果子串也被算命中。 - 转义遗漏:
.*+?()[]等有特殊含义,要匹配字面量需加反斜杠。 - 测试文本太干净:真实数据常有空行、多余空格、特殊字符,尽量用接近实际的样本。
验证方法
改完正则后,用三类样本过一遍:应当命中的、不应当命中的、边界情况(空字符串、超长行、含特殊字符)。三类都符合预期,再拿去用。