我正在尝试在Java中创建一个正则表达式来验证具有以下约束的数字:
例如:042004359
有效,但0000000000
不有效。
答案 0 :(得分:3)
\\d+[1-9]\\d*
应该有用,我想。
答案 1 :(得分:1)
这应该做你需要的:
/^(?=.*[1-9])([0-9]+)$/
虽然匹配所有数字 [0-9] 但它包含lookahead,但确保至少有一个 [1-9]
我很确定Java允许使用前瞻。
编辑:这regular expression test page似乎暗示它可以。
编辑:如果 0 有效,那么你可以使用它:
^((?=.*[1-9])([0-9]+)|0)$
这将使 0 成为例外(注意OR运算符)。
答案 2 :(得分:0)
^(\d{1})(\d*?[1-9]{1}\d*)*$
^(\ d {1}) - 行必须以1位数字开头 (\ d *?[1-9] {1} \ d *)* $ - 行必须以零或更多0-9位数结束(保守的?),然后是1 1-9位,然后是零或更多位数。此模式可以重复零次或多次。
适用于:
100000
100100个
1010200个
1
2
也许这太复杂了,哈哈。
答案 3 :(得分:0)
以下是使用外观的一种解决方案:(?<=\D|^)\d+(?=[1-9])\d*
(?<=\D|^) # lookbehind for non-digit or beginning of line
\d+ # match any number of digits 0-9
(?=[1-9]) # but lookahead to make sure there is 1-9
\d* # then match all subsequent digits, once the lookahead is satisfied