我想测试一个字符串是否包含数字(至少一个数字) 所以我尝试了这个:
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");
}
}
}
不幸的是,如果条款打印出来,它不包含任何数字。 我使用正则表达式错了吗?
答案 0 :(得分:1)
试试以下正则表达式:
private static final String DIGIT_PATTERN = "\\d+";
答案 1 :(得分:1)
为什么不使用
private static final String DIGIT_PATTERN = "\\d";
如果那里有任何数字,那应该匹配。
答案 2 :(得分:1)
最基本的模式
".*[0-9].*"
使用您的代码为我工作。