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

3
我有一个问题,无法使用正则表达式匹配任何整数的字符串。
这是我的代码:
if(quantityDesired.matches("\b\d+\b")){.......}

但是 Eclipse 给出了这个错误信息:
Invalid escape sequence (valid ones are  \b  \t  \n  \f  \r  \"  \'  \\ )

我已经查看了其他类似的问题,并尝试使用双反斜杠,但没有起作用。有什么建议吗?
3个回答

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类型的整数,那么您应该像Seyfülislam提到的那样使用Integer.parseInt,而不是自己解析。


2

注意:此仅适用于正数。 - manikanta nvsr

1

为什么不喜欢使用Integer.parseInt()方法?它可以实现你想要的功能,而且更易读。


小心:parseInt在9999999999999999999这个数值上会失败。尽管原帖没有明确指定是否需要这样的结果。 - Mark Byers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接