我目前使用“(\d){1,9}”,但它无法使诸如“0134”之类的数字无效。该表达式必须只验证正整数的数字。谢谢。
最佳答案
现在您使用表达式 [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
的部分。
关于java - Java 中用于正整数的正则表达式(不包括以零开头的整数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5998247/