什么是“任何正整数,不包括0”的正则expression式

如何改进^\d+$以禁止0

编辑(使其更具体):

示例允许:
1
三十
111
不允许的示例:
0
00
-22

无论是否允许带有前导零的正数(如022 )都没关系。

这是用于Java JDK Regex实现的。

尝试这个:

 ^[1-9]\d*$ 

…和一些填充超过30个字符SO答案限制:-)。

对不起,进来晚但OP想要允许076但可能不希望允许0000000000

所以在这种情况下,我们需要一个包含至less一个非零的一个或多个数字string 。 那是

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

你可能会尝试一个负面的前瞻断言:

 ^(?!0+$)\d+$ 

^\d*[1-9]\d*$

这可以包括所有的正值,即使它被前面的零填充也是如此

允许

1

01

10

11等

不允许

0

00

000等。

你可能想要这个(编辑:允许号码的forms0123 ):

 ^\\+?[1-9]$|^\\+?\d+$ 

不过,如果是我,我会这样做

 int x = Integer.parseInt(s) if (x > 0) {...} 

得到这个:

 ^[1-9]|[0-9]{2,}$ 

有人打败了? 🙂

只是为了好玩,另一种select使用lookaheads:

 ^(?=\d*[1-9])\d+$ 

尽可能多的数字,但至less有一个必须是[1-9]

尝试这一个,这个最好的工作,以满足要求。

 [1-9][0-9]* 

这里是示例输出

 String 0 matches regex: false String 1 matches regex: true String 2 matches regex: true String 3 matches regex: true String 4 matches regex: true String 5 matches regex: true String 6 matches regex: true String 7 matches regex: true String 8 matches regex: true String 9 matches regex: true String 10 matches regex: true String 11 matches regex: true String 12 matches regex: true String 13 matches regex: true String 14 matches regex: true String 15 matches regex: true String 16 matches regex: true String 999 matches regex: true String 2654 matches regex: true String 25633 matches regex: true String 254444 matches regex: true String 0.1 matches regex: false String 0.2 matches regex: false String 0.3 matches regex: false String -1 matches regex: false String -2 matches regex: false String -5 matches regex: false String -6 matches regex: false String -6.8 matches regex: false String -9 matches regex: false String -54 matches regex: false String -29 matches regex: false String 1000 matches regex: true String 100000 matches regex: true 

这应该只允许小数> 0

 ^([0-9]\.\d+)|([1-9]\d*\.?\d*)$ 

^ [1-9] * $是我能想到的最简单的