需要一个正则表达式来匹配不能全零的可变长度数字字符串
我需要验证表单上的输入。 我期望输入是 1 到 19 位数字之间的数字。 输入也可以从零开始。 但是,我想验证它们并不全为零。 我有一个正则表达式,可以确保输入是数字,并且数字在 1 到 19 之间。
^\d[1,19]$
但我不知道如何包括检查整个字符串不全为零。 我尝试了这个
^(![0]{1,19})(\d[1,19])$
,但它在 0000000000000000001 上失败,因为它允许可变数量的零。
如何检查整个字符串不为零?
谢谢。
我正在尝试在 ASP.NET RegularExpressionValidator 中执行此操作,因此我希望有一个表达式。 我还有其他选择,所以如果不能做到这一点,我也不会运气不好。
I need to validate an input on a form. I'm expecting the input to be a number between 1 to 19 digits. The input can also start with zeros. However, I want to validate that they are not all zeros. I've got a regex that will ensure that the input is numeric and between 1 and 19 numbers.
^\d[1,19]$
But I can't figure out how to include a check that the entire string is not all zeros. I tried this
^(![0]{1,19})(\d[1,19])$
but it fails on 0000000000000000001 because it's allowing a variable number of zeros.
How do I check that the entire string is NOT zeros?
Thanks.
I'm trying to do this in a ASP.NET RegularExpressionValidator so I was hoping for a single expression. I have other options, so I'm not out of luck if this can't be done.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
^(?!0+$)\d{1,19}$
^(?!0+$)\d{1,19}$
只需进行否定前瞻:
这在 Perl 中工作得很好。
Just do a negative lookahead:
This works fine in Perl.
(?!0+$) 是一个前瞻指令。 这 ?! 是负向先行命令,用于搜索 1 个或多个 0 到字符串末尾。 如果匹配,则使用这些字符,留下 \d{1,19} 的常规数字搜索。
Boost Perl 正则表达式 对 Boost 认可的 perl 正则表达式进行了很好的讨论。
(?!0+$) is a lookahead directive. The ?! is the negative lookahead command to search for 1 or more 0's to the end of the string. If that matches, then the characters are consumed, leaving the regular digit search of \d{1,19}.
Boost Perl Regexp has a good discussion of perl regexp as recognized by Boost.
你不需要正则表达式
you don't need RegEx for that