正则表达式 - 不允许零

时间:2010-03-09 13:55:24

标签: regex validation

请原谅我的无知。我对正则表达式的了解非常有限。

我在正则表达式验证器上有以下正则表达式。

^(\d{1,3},?(\d{3},?){0,2}\d{3}|\d{1,3})$

目前允许零。我需要更新它,以便它不允许值为0.

[编辑:只是为了澄清,我希望它排除零值而不是单数“0” - 谢谢]

非常感谢任何帮助。

由于 跳越

2 个答案:

答案 0 :(得分:6)

你可能正在寻找这样的东西:

^[1-9]\d{0,2}(\d*|(,\d{3})*)$

答案 1 :(得分:3)

你的正则表达式的第二部分允许

0。将其更改为:

^(\d{1,3},?(\d{3},?){0,2}\d{3}|[1-9]\d{0,2})$

当总位数小于或等于3时,确保第一个数字不为零。

正则表达式仍允许使用000,000,000000,123这样的模式来解决这个问题,您可以将正则表达式的第一部分更改为:

^([1-9]\d{0,2},?(\d{3},?){0,2}\d{3}|[1-9]\d{0,2})$

或者将其重写为

^[1-9]\d{0,2}(,?\d{3}){0,3}$

这仍允许123,456789123456,789。我们将其改为:

^[1-9]\d{0,2}(?:(,\d{3}){0,3}|(\d{3}){0,3})$

这将允许123,456,789123456789但不允许123,456789123456,789