什么是“任何正整数,不包括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] * $是我能想到的最简单的