如何^\d+$
改进以禁止0
?
编辑(更具体):
允许的示例:
1
30
111
不允许的示例:
0
00
-22
是否允许以零开头的正数并不重要(例如022
)。
这用于Java JDK Regex实现。
Answers:
^[1-9]+$
?
^[1-9]+$
不允许10
^[1-9]+$
不允许10
。该建议将允许@Mulmoth 1
,因为它\d*
匹配零次或多次。但是,它不允许076
,因为它不能以开头[1-9]
。
01
?
很抱歉,迟到了,但OP希望允许,076
但可能不想允许0000000000
。
因此,在这种情况下,我们需要一个包含至少一个非零的一个或多个数字的字符串。那是
^[0-9]*[1-9][0-9]*$
^[0-9]*[1-9][0-9]*(\.[0-9]+)$
但这是对“十进制”的含义的假设。您需要指数部分吗?这很复杂,所以请问另一个问题。
^0*[1-9]\d*$
由于第一个[0-9]*
模式仅在[1-9]
找到第一个非零值之前才有效,即只有在出现初始零(0*
)时才有效。
试试这个,这个最能满足需求。
[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
[1-9]\d*
。
您可能想要这样(编辑:允许表单的编号0123
):
^\\+?[1-9]$|^\\+?\d+$
但是,如果是我,我会做
int x = Integer.parseInt(s)
if (x > 0) {...}
Integer.parseInt()
本身增加了很少的开销。抛出和捕获异常非常昂贵。
\\+?
前缀如何处理?我猜想这应该是转义的加号,就像它在Java源代码中一样,但是为什么呢?如果不允许使用负号,我认为也可以假设正号也可以。
076
?