我遇到一个问题,正则表达式将String与任何int匹配。
这就是我所拥有的:
if(quantityDesired.matches("\b\d+\b")){.......}
但Eclipse给了我:
Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ )
我已经查看了其他类似的问题,我尝试使用双反斜杠,但这不起作用。建议?
答案 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)
答案 2 :(得分:1)
为什么不选择Integer.parseInt()方法?它做你想要的,它更具可读性。