首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java中正整数的正则表达式(不包括那些以零开头的整数)

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

Stack Overflow用户
提问于 2011-05-14 06:03:16
回答 2查看 14.4K关注 0票数 4

我当前使用的是"(\d){1,9}",但它不能使诸如"0134“之类的数字无效。表达式只能验证为正整数的数字。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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更改部件。

票数 7
EN

Stack Overflow用户

发布于 2011-05-14 06:19:54

您可以使用如下所示的regex:

代码语言:javascript
复制
^(?!^0)\d{1,9}$

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

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5998247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档