regex:如何只允许大于零的整数

Regex: how to only allow integers greater than zero

我尝试了下面的方法,只允许在我的文本框中使用整数,这很好,但是它允许在其中使用零。是否还有其他可以添加的内容来防止添加零?

1
\d+


这将允许10而不是01,并且它将只允许由数字组成的数字,即没有句号或减号……但也不允许有加号、科学记数法等。

1
^[1-9][0-9]*$

一个微小的变化是:

1
/\d*[1-9]\d*/

这将允许前导零。


如果您不关心负数和像07这样的愚蠢数字,这将:

1
/[1-9]\d*/

对于更健壮的解决方案,我建议将匹配的字符串转换为整数,并检查它是否满足您的条件。


1
^(0*[1-9][0-9]*)$

这将允许"愚蠢"的数字,如007,但不是0或000或空字符串。

注意,\d也匹配来自其他字符集(如??????????的数字。请参见:d的效率低于[0-9]。

^表示字符串的开始,$表示字符串的结束。它们一起确保整个字符串匹配。


1
^(\d{2}[1-9])$

匹配:从001到999例子001099九百九十九

不匹配00001零


代码:

1
^([1-9][0-9]+|[1-9])$

示例:http://regexr.com/3annd

测试:

1
2
3
4
5
6
7
0
10
01
11
00
1
100