密码规则:长度为8-16,必须数字字母组合、可包含下划线
在网上找了很多正则表达式都不能满足我的要求。
后面综合总结了一下,用了这样的办法,在这里做一下记录
public class Test {
public static void main(String[] args) {
String pwd1 = "________";
System.out.println("全是下划线:"+checkPwd(pwd1));
String pwd2 = "12345678";
System.out.println("全是数字:"+checkPwd(pwd2));
String pwd3 = "abcdefga";
System.out.println("全是字符:"+checkPwd(pwd3));
String pwd4 = "1234";
System.out.println("长度不足8位:"+checkPwd(pwd4));
String pwd5 = "1234abcd1234abcd1";
System.out.println("长度大于16位:"+checkPwd(pwd5));
String pwd6 = "1234abcd";
System.out.println("正确的密码:"+checkPwd(pwd6));
String pwd7 = "1234____abcd";
System.out.println("包含下划线:"+checkPwd(pwd7));
String pwd8 = "1234@#!_abcd";
System.out.println("包含特殊字符:"+checkPwd(pwd8));
}
public static boolean checkPwd(String str){
if(str.length()>=8&&str.length()<=16){
String r = "^(?![a-zA-z]+$)(?!\\d+$)(?![!@#$%^&*]+$)[a-zA-Z\\d_!@#$%^&*]+$";
if(str.matches(r)){
return true;
}else {
return false;
}
}else{
return false;
}
}
}
结果
全是下划线:false
全是数字:false
全是字符:false
长度不足8位:false
长度大于16位:false
正确的密码:true
包含下划线:true
包含特殊字符:true