寻求支持Google RE2的正则测试工具及正则表达式调试方案
正则表达式调整建议
你当前使用的正则^(?:1-)?((?:R|RO|Ro)?[:|.]?\s?\d{3}[-|.]?\d{4}[-|/]F\d{2}-\d{2})$存在两处明显问题,导致无法匹配你给出的样例:
- 字符组语法错误:
[-|.]、[-|/]中的|会被RE2识别为普通字面字符,不是逻辑或运算符,如果你想要匹配-/.//这几个分隔符,直接写[-./]即可。 - 匹配规则与预期样例不兼容:
- 原规则强制要求编号结尾为
F\d{2}-\d{2},但你给出的样例中存在F01、F08这类仅两位数字结尾的格式,还有RO6868847-000-010这类不含F的纯数字分隔格式,均无法被原规则匹配。 - 原规则限定数字段为
3位数字+可选分隔符+4位数字,但样例RO6868847-000-010的数字段为7位+3位+2位的结构,不符合长度要求。
- 原规则强制要求编号结尾为
如果需要覆盖你给出的所有样例,可以调整为如下正则(可根据实际业务规则再做裁剪):
^(?:1-)?(?:R|RO|Ro)?[:.]?\s?\d{3,7}(?:[-.]\d{2,4})*(?:[/-]F\d{2}(?:-\d{2})?)?$
如果你的业务规则只需要匹配含F的编号,可以调整结尾规则为[/-]F\d{2}(?:-\d{2})?即可适配单段/双段F后缀的格式。
RE2兼容的测试工具推荐
以下工具原生支持RE2正则语法,可以直接用来测试你的规则:
- Google官方RE2正则测试工具
- Golang标准库regexp包的在线测试工具(Golang regexp完全基于RE2实现)
- 大数据产品自带的正则测试功能:比如BigQuery查询编辑器中直接调用REGEXP_MATCH函数测试,返回结果完全符合RE2规则
内容的提问来源于stack exchange,提问作者devnull
相关产品推荐
相关产品推荐

