Java中正整数的正则表达式(不包括以零开头的表达式)

时间:2011-05-13 22:03:16

标签: java regex

我目前使用“(\ d){1,9}”,但它无法使诸如“0134”之类的数字无效。该表达式必须仅验证积极INTEGERS的数字。感谢。

2 个答案:

答案 0 :(得分:7)

现在你使用表达式[0-9]{1,9},所以这显然允许数字0134。如果要求第一个字符不是零,则必须使用[1-9][0-9]{0,8}

顺便说一下:0134 是一个正整数。它是一个整数,是正数。 ;)

编辑:

为防止整数溢出,您可以使用此模式:

  • [1-9][0-9]{0,8}
  • [1-1][0-9]{9}
  • [2-2][0-1][0-9]{8}
  • [2-2][1-1][0-3][0-9]{7}
  • [2-2][1-1][4-4][0-6][0-9]{6}
  • ...

我想你明白了。然后将这些表达式与|结合起来,就完成了。

或者,查看Integer.valueOf(String)方法,它如何解析数字并检查溢出。复制该代码并使用NumberFormatException更改部件。

答案 1 :(得分:5)

您可以使用如下所示的正则表达式:

^(?!^0)\d{1,9}$

你的意思是说正面整数没有前导零我相信。