正则表达式测试字符串是否包含数字

时间:2013-11-20 09:44:10

标签: java regex string

我想测试一个字符串是否包含数字(至少一个数字) 所以我尝试了这个:

public class Test {
private static final String DIGIT_PATTERN = "^(?=.*\\d)";
private static final Pattern DIGIT_PATTERN_COMPILED = Pattern.compile(DIGIT_PATTERN);

/**
 * 
 * @param args
 */
public static void main(String[] args) {
    String passwordOne = "123";
    String passwordTwo = "abc";

    Matcher matcher = null;

    matcher = DIGIT_PATTERN_COMPILED.matcher(passwordOne);

    if(!matcher.matches()) {
        System.out.println("Password " + passwordOne + " contains no number");
    } else {
        System.out.println("Password " + passwordOne + " contains number");
    }

    matcher = DIGIT_PATTERN_COMPILED.matcher(passwordTwo);

    if(!matcher.matches()) {
        System.out.println("Password " + passwordTwo + " contains no number");
    } else {
        System.out.println("Password " + passwordTwo + " contains number");
    }   
}
}

不幸的是,如果条款打印出来,它不包含任何数字。 我使用正则表达式错了吗?

3 个答案:

答案 0 :(得分:1)

试试以下正则表达式:

private static final String DIGIT_PATTERN = "\\d+";

答案 1 :(得分:1)

为什么不使用

private static final String DIGIT_PATTERN = "\\d";

如果那里有任何数字,那应该匹配。

答案 2 :(得分:1)

最基本的模式

".*[0-9].*"

使用您的代码为我工作。