这是我的代码,我不知道它为什么会返回false
"A123".matches("\\D+");
答案 0 :(得分:3)
必须是:
"A123".matches("^\\d+$");
小写d
代表字符串开头的数字^
,字符串结尾代表^
。
答案 1 :(得分:1)
这是因为.matches()
被错误命名的事实,你是数日/数百名被日常生活的Java开发者中的另一个受害者。
它将尝试匹配整个输入。这不是你想要的。
您必须改为Pattern
,Matcher
和.find()
:
private static final Pattern NONDIGIT = Pattern.compile("\\D");
// Test whether there is any nondigit character in a string:
NONDIGIT.matcher(theString).find();
你应该特别这样做,因为无论如何.matches()
每次都会重新编译Pattern
;在这里,您只有一个Pattern
。
答案 2 :(得分:1)
你可以试试这个:
"A123".matches("[0-9]+")
此外,当您将其标记为Java时,还有另一种方法可以使用Apache的NumberUtil.isNumber(String str)来为您检查。