java正则表达式返回false

标签 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);
    }

}

最佳答案

来自 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/

相关文章:

java - 对象引用困惑

java - 删除引号的正则表达式

用于验证统一类型标识符的正则表达式

javascript - 如何使用 JavaScript 验证此表单上的邮政编码?

java:for循环内的最大执行时间

java - Android 设备未在 Eclipse 中检测到

java - 类型不匹配 : cannot convert from Boolean to boolean

regex - 如何使用 REGEXEXTRACT 删除 Google 表格上多个括号之间的特定文本

php - 在某个字符出现 n 次后选择的正则表达式

java - 使用saaj在soap header 中添加 session id