java正则表达式返回false

use*_*967 5 java regex

我是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);
    }

}
Run Code Online (Sandbox Code Playgroud)

das*_*ght 10

从Java文档:

matches方法尝试将整个输入序列与模式匹配.

您的正则表达式匹配单个数字,而不是数字.添加+\\d,以matchone或多个数字:

private static final String NUMBER_PATTERN = "\\d+";
Run Code Online (Sandbox Code Playgroud)

作为旁注,您可以组合模式的初始化和声明,使构造函数不必要:

Pattern pattern = Pattern.compile(NUMBER_PATTERN);
Run Code Online (Sandbox Code Playgroud)