除'00000'之外的5位数的正则表达式

时间:2012-12-11 10:35:21

标签: asp.net regex validation

我需要一个正则表达式,接受至少1位数字和最多5位数字,如果用户按照以下方式输入零,例如' 00',' 000',& #39; 0000'' 00000'那么表达应该拒绝这样的输入。 目前,我正在使用^ [0-9] {1,5} $。

5 个答案:

答案 0 :(得分:3)

^(?=.*[1-9].*)[0-9]{1,5}$

使用先行断言确保至少有一个非零数字。如果有一个,那么表达式的其余部分只有在1到5位数之间才匹配。必须满足这两个条件,否则表达式将不匹配。

同意,如果你试图匹配一个数字,而不是一串数字(比如邮政编码),那么用数字比较而不是比较用正则表达式。

答案 1 :(得分:2)

如果您确保将用户的输入格式化为带有前导零的5位数字,那么以下正则表达式将起作用:

^[0-9]{5}(?<!00000)$

这使用负向lookbehind来确保输入的字符串不是5个零。

答案 2 :(得分:1)

不好但是工作:

从1到99999:[1-9][0-9]{0,4}

从01到09999:0[1-9][0-9]{0,3}

从001到00999:00[1-9][0-9]{0,2}

从0001到00099:000[1-9][0-9]{0,1}

从00001到00009:0000[1-9]

然后将所有这些放在一起:

^(0[1-9][0-9]{0,3}|00[1-9][0-9]{0,2}|000[1-9][0-9]{0,1}|0000[1-9]|[1-9][0-9]{0,4})$

编辑:已更新。

答案 3 :(得分:1)

它真的需要成为正则表达式吗?为什么不检查0 < value && value <=99999

答案 4 :(得分:0)

好的我明白了,这里的解决方案: ^ [1-9] [0-9] {0,4} $

取1到99999之间的所有数字

为什么不使用RangeValidator,它更简单。

<asp:RangeValidator ID="RangeValidator1" runat="server" ErrorMessage="Value must be greater than zero." ControlToValidate="tbQty" MinimumValue="1" MaximumValue="99999" Type="Integer"></asp:RangeValidator>