我是 Java 正则表达式的新手。我编写了以下代码来验证非数字号码。如果我们输入任何非数字,它应该返回 false。对我来说,下面的代码总是返回 false。这里有什么问题吗?
封装正则表达式;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class NumberValidator {
private static final String NUMBER_PATTERN = "\\d";
Pattern pattern;
public NumberValidator() {
pattern = Pattern.compile(NUMBER_PATTERN);
}
public boolean validate(String line){
Matcher matcher = pattern.matcher(line);
return matcher.matches();
}
public static void main(String[] args) {
NumberValidator validator = new NumberValidator();
boolean validate = validator.validate("123");
System.out.println("validate:: "+validate);
}
}
最佳答案
来自 Java 文档:
The matches method attempts to match the entire input sequence against the pattern.
您的正则表达式匹配单个数字,而不是数字。在 \\d
之后添加 +
以匹配一个或多个数字:
private static final String NUMBER_PATTERN = "\\d+";
作为旁注,您可以将模式的初始化和声明结合起来,从而不需要构造函数:
Pattern pattern = Pattern.compile(NUMBER_PATTERN);
关于java正则表达式返回false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11635257/