使用RegEx验证数字输入

时间:2012-08-13 21:38:08

标签: java regex

我正在尝试在Java中创建一个正则表达式来验证具有以下约束的数字:

  1. 数字可以是任意长度,但只能包含数字
  2. 第一个数字可以是0 - 9
  3. 后续数字可以是0 - 9,但其中一个数字必须为非零。
  4. 例如:042004359有效,但0000000000不有效。

4 个答案:

答案 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