如何用量词匹配符合后缀长度及零数量规则的字符串
正则表达式匹配修正方案
问题分析
你之前使用的正则 ^\d{6}-0+([1-9]+)$ 存在两个关键问题:
- 未限制短横线“-”后的字符总长度为4,导致长度不足或超出的字符串也能被匹配
- 未限制零的数量范围为1-3个,零的数量可能超过3
正确正则表达式
可以使用以下两种正则实现需求:
写法一(分场景明确匹配)
^\d{6}-(0{1}[1-9]\d{2}|0{2}[1-9]\d|0{3}[1-9])$
各部分说明:
^\d{6}-:匹配开头的6位数字和短横线0{1}[1-9]\d{2}:匹配1个零 + 以非零数字开头的3位数字,确保短横线后总长度为40{2}[1-9]\d:匹配2个零 + 以非零数字开头的2位数字,总长度40{3}[1-9]:匹配3个零 + 1位非零数字,总长度4
写法二(简洁写法)
^\d{6}-0{1,3}[1-9]\d{0,2}$
各部分说明:
0{1,3}:精准匹配1到3个零[1-9]\d{0,2}:匹配1位非零数字,后面可跟0到2位数字,既保证短横线后总长度为4,又避免出现全零的情况
匹配验证
符合要求的字符串会被匹配:
- 123456-0001
- 123456-0012
- 123456-0123
不符合要求的字符串会被排除:
- 123456-001(短横线后长度仅3,不满足4位要求)
- 123456-00001(短横线后长度5,超出要求)
- 123456-0000(全为零,无有效非零数字)
- 123456-1234(零的数量为0,不符合1-3个的要求)
内容的提问来源于stack exchange,提问作者Mykola Petiukh
相关产品推荐
相关产品推荐

