Java - 正则表达式匹配任何整数

时间:2011-10-03 21:42:48

标签: java regex eclipse

我遇到一个问题,正则表达式将String与任何int匹配。

这就是我所拥有的:

if(quantityDesired.matches("\b\d+\b")){.......}

但Eclipse给了我:

Invalid escape sequence (valid ones are  \b  \t  \n  \f  \r  \"  \'  \\ )

我已经查看了其他类似的问题,我尝试使用双反斜杠,但这不起作用。建议?

3 个答案:

答案 0 :(得分:4)

需要转义Java字符串文字中的反斜杠:

"\\b\\d+\\b"

这当然只匹配整数,而不是你问题中所说的任何整数。那是你的意图吗?

  

我已经查看了其他类似的问题,我尝试使用双反斜杠,但这不起作用。

然后你还必须有另一个错误。我想问题是您要使用Matcher.find而不是matches。前者在字符串中的任何位置搜索模式,而后者仅在整个字符串与模式匹配时才匹配。以下是如何使用Matcher.find

的示例
Pattern pattern = Pattern.compile("\\b\\d+\\b");
Matcher matcher = pattern.matcher(quantityDesired);
if (matcher.find()) { ... }

注意

如果你确实想要匹配整个字符串,那么你不需要锚点:

if (quantityDesired.matches("\\d+")) {.......}

如果你只想接受适合Java int类型的整数,你应该使用Integer.parseInt作为Seyfülislam mentioned,而不是自己解析它。

答案 1 :(得分:2)

您可以查看Apache Commons Lang StringUtils.isNumeric

,而不是正则表达式

答案 2 :(得分:1)

为什么不选择Integer.parseInt()方法?它做你想要的,它更具可读性。