我当前使用的是"(\d){1,9}",但它不能使诸如"0134“之类的数字无效。表达式只能验证为正整数的数字。谢谢。
发布于 2011-05-14 06:06:50
现在您使用的是表达式[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更改部件。
发布于 2011-05-14 06:19:54
您可以使用如下所示的regex:
^(?!^0)\d{1,9}$我相信你想说的是没有前导零的正整数。
https://stackoverflow.com/questions/5998247
复制相似问题