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

Regex 具有可变数字长度的负正则表达式,regex,Regex,我想验证一个大小在11到15个字符之间的数字,它不是一个只有零的序列 我测试了这个正则表达式: ^((0[^0]{10,14})|([1-9][0-9]{10,14}))$ 000000000000->不匹配, 1501087751444->匹配, 0154564445666->不匹配? 但当一个数字以零开头时,它就不起作用了。为什么? 此外,[^0]允许使用字母数字和特殊字符。。。丑陋的 您能帮我吗?您可以使用以下模式: ^(?=0*[^0])[0-9]{11,15}$ (?=0*[^0]

我想验证一个大小在11到15个字符之间的数字,它不是一个只有零的序列

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

^((0[^0]{10,14})|([1-9][0-9]{10,14}))$
000000000000->不匹配, 1501087751444->匹配, 0154564445666->不匹配?

但当一个数字以零开头时,它就不起作用了。为什么? 此外,
[^0]
允许使用字母数字和特殊字符。。。丑陋的


您能帮我吗?

您可以使用以下模式:

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

(?=0*[^0])
是一种前瞻性断言,仅检查是否有一个字符与零不同。

您可以使用以下模式:

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

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

正则表达式还有另一个问题:它不匹配:010111111111

您需要对此进行负面展望:

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


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

您的正则表达式还有一个问题:它不匹配:010111111

您需要对此进行负面展望:

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


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

如何
1501087751444
正常,但
0154564445666
不正常?是,
0[^0]{10,14}
不匹配
0154564445666
但与
0azertyazerty
一起工作……那么您如何接受一个将使
000000000000
无效且0154564445666有效的答案?看来你的例子不正确,因为这正是我想要的
000000000000
不正确(不是仅为零的序列)而
0154564445666
是有效的,因为它的长度是13,并且不是一个仅为零的序列。请参阅此演示:正则表达式同时匹配第二个和第三个字符串,但不匹配第一个,并且此结果与您的问题不匹配。如何
1501087751444
正常,但
0154564445666
不正常?是的,
0[^0]{10,14}
不匹配
0154564445666
但与
0azertyazerty
一起工作……那么您如何接受一个将使
000000000000
无效且0154564445666有效的答案?看来你的例子不正确,因为这正是我想要的
000000000000
不正确(不是一个仅为零的序列),并且
0154564445666
有效,因为is长度为13,并且不是一个仅为零的序列。请参阅此演示:正则表达式同时匹配第二个和第三个字符串,但不匹配第一个字符串,并且此结果与您的问题不匹配。谢谢,short,它起作用了!但是它是
^(?!0+$)\d{11,15}$
(11到15个字符之间)。谢谢,很短,很好用!但是它是
^(?!0+$)\d{11,15}$
(在11到15个字符之间)。