正则表达式,用于将定义的长度数与前导零相匹配

时间:2014-07-23 21:20:45

标签: regex

我想使用正则表达式来匹配具有定义长度和前导零的数字。例如,数字长度为6:

"000123" //Match
"002535" //Match
"2654" //No match
"000021" //Match

我可以使用哪种正则表达式?

3 个答案:

答案 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*