我想使用正则表达式来匹配具有定义长度和前导零的数字。例如,数字长度为6:
"000123" //Match
"002535" //Match
"2654" //No match
"000021" //Match
我可以使用哪种正则表达式?
答案 0 :(得分:3)
如果000000
是有效匹配,请使用the answer by @Bohemian♦.
如果不允许000000
,请在答案中使用此变体(请接受他的回答而非我的回答):
^(?=0+[1-9])0\d{5}$
查看 the demo 中的匹配项。
<强>解释强>
^
锚点断言我们位于字符串的开头(?=0+[1-9])
断言接下来是任意数量的零后跟一个1或9的字符0
匹配一个零\d{5}
匹配五位数$
锚点断言我们位于字符串的末尾<强>参考强>
答案 1 :(得分:2)
当然这是最简单的:
^0\d{5}$
虽然在问题中未作为要求说明,但要排除全零输入,请对该情况使用否定的预测:
^(?!0+$)0\d{5}$
答案 2 :(得分:0)
实际上,如果你允许从0到9的正好六(6)个数字的任意组合,那么正则表达式将是
^\d{6}$
如果您只允许五(5)个任意数字和至少一个前导零,请使用
^0\d{5}$
代替。
如果你想禁止000000
,你需要做一个先行:
^(?=\d{6}$)\d*[1-9]\d*
最后,如果你想禁止000000
并强制引导0
,请使用
^(?=\d{6}$)0\d*[1-9]\d*