具有可变数字长度的负正则表达式

时间:2013-12-09 13:24:12

标签: regex

我想验证一个大小在11到15个字符之间且不是仅为零的连续数字。

我测试了这个正则表达式:

^((0[^0]{10,14})|([1-9][0-9]{10,14}))$
  

000000000000 - >不匹配,   1501087751444 - >匹配的,   0154564445666 - > 不匹配?

但是当一个数字从零开始时它就不起作用了。为什么? 余母,[^0]允许使用字母数字和特殊字符......丑陋。

你能帮帮我吗?

2 个答案:

答案 0 :(得分:2)

您可以使用此模式:

^(?=0*[^0])[0-9]{11,15}$

(?=0*[^0])是一个先行断言,只检查是否有一个字符与零不同。

答案 1 :(得分:2)

你的正则表达式还有另一个问题:它不匹配: 0 1 0 111111111

你需要一个负面的预测:

^(?!0+$)\d{11,15}$

它将确保从头到尾没有零。