用正反例检查规则,而不是只看高亮
regex101 怎么用?边写边测,弄清正则究竟匹配了什么。
regex101 用来编写、测试和解释正则表达式。它适合排查“为什么多匹配了一段”或“为什么分组为空”。从一个产品编号规则开始,选择与项目一致的语言,再用正例和反例验证。
打开 regex101 官网 ↗
先选语言,再写规则
不同正则引擎的语法与替换规则可能不同。网站里的测试通过后,还要放到项目实际运行环境中验证;不要把一种语言的表达式直接当成所有语言通用。
任务 01
先测一个完整的产品编号
练习规则要求字符串恰好是 ITEM- 加四位数字,例如 ITEM-0042。选择 JavaScript 风格,并先关闭多行 m 标志,单独粘贴每个测试值。
选 JavaScript和目标环境一致
填写规则限定前缀与四位数字
输入正例ITEM-0042
^ITEM-([0-9]{4})$- 在正则输入区填写下面的表达式;这里给出的是规则正文,不含 / 分隔符。
- 在测试文本区单独输入 ITEM-0042,观察完整匹配与解释。
- 查看 ^、[0-9]{4} 与 $ 的作用,确认匹配覆盖整个测试值。
多行模式会改变锚点含义
开启 m 后,^ 与 $ 可以针对每一行,而不只是整个测试文本。本例为了检查单个编号,先逐个测试、不开 m,避免把多行高亮误认为单个输入验证。
任务 02
提取四位数字,而不是整个编号
括号形成捕获组。本例的完整匹配是 ITEM-0042,第一个捕获组是 0042;前导零是编号的一部分,不能为了“方便”随手转成数字 42。
完整匹配ITEM-0042
捕获组 10042
核对替换保留前导零
- 打开匹配详情,找到完整匹配与第一个捕获组。
- 在替换区域尝试 JavaScript 替换文本 SKU-$1,核对结果是否为 SKU-0042。
- 将分组用途记清楚:需要完整编号时用完整匹配,只需要尾部四位时才取捕获组。
替换语法也要跟着语言走
本例的 $1 对应 JavaScript 替换语法;切换引擎或复制到其他工具时,先看该工具的替换说明。不要只复制替换文本而忽略环境。
任务 03
把“不该通过”的样例也放进测试
一个正例通过还不够。用长度不足、多余前缀、多余后缀和空字符串测试,确认规则没有意外放宽。
正例通过ITEM-0042
反例不通过ITEM-42 等
运行时复测项目里的语言和标志
- 逐个测试 ITEM-42、XITEM-0042、ITEM-0042-extra 和空字符串,本规则都不应匹配。
- 补充真实业务允许与不允许的格式,例如是否允许小写;先确定需求,再调整规则。
- 在项目运行时重复这组样例,检查标志、转义和输入预处理是否一致。
不要拿简单规则承诺复杂校验
邮箱、网址等格式有大量边界,本页不提供“万能校验正则”。处理陌生或复杂表达式时,也要考虑长输入带来的性能问题。
正例证明能匹配,反例帮助发现匹配过多。
本页为 ToolAtlas 独立编辑的入门指南,非 regex101 官方教程。本站与该产品无隶属或赞助关系。