正则表达式检查字符串是否只包含数字不起作用

时间:2015-03-18 10:47:16

标签: java regex

这是我的代码,我不知道它为什么会返回false

    "A123".matches("\\D+");

3 个答案:

答案 0 :(得分:3)

必须是:

"A123".matches("^\\d+$");

小写d代表字符串开头的数字^,字符串结尾代表^

答案 1 :(得分:1)

这是因为.matches()被错误命名的事实,你是数日/数百名被日常生活的Java开发者中的另一个受害者。

它将尝试匹配整个输入。这不是你想要的。

您必须改为PatternMatcher.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)来为您检查。