1.密码只能是数字、小写英文字母、大写英文字母、下划线组成,且密码至少包含3种,长度至少有11位。
//定义字符串
String password = "slwoei123_1";
//匹配字符串
String verify = "^(?![a-zA-Z]+$)(?![a-z\\d]+$)(?![a-z_]+$)(?![A-Z\\d]+$)(?![A-Z_]+$)(?![\\d_]+$)[a-zA-Z\\d_]{11,}+$";
//匹配字符串是否符合正则表达式
if (Pattern.matches(verify,password)){
System.out.println("密码输入正确!");
} else {
System.out.println("密码不符合要求!");
}
运行结果为:
密码输入正确!
^表示字符串的开始。
(?![a-zA-Z]+$)表示后面不能全是字母。
(?![a-z\d]+$)表示后面不能全部小写字母和数字。
(?![a-z_]+$)表示后面不能全部是小写字母和下划线。
(?![A-Z\d]+$)表示后面不能全部是大写字母和数字。
(?![A-Z_]+$)表示后面不能全部是大写字母和下划线。
(?![\d_]+$)表示后面不能全部是数字和下划线。
[a-zA-Z\d_]表示可以包含字母、数字、下划线。
{11,}表示长度11及以上。
$表示字符串的结束。
综合以上,这个正则表达式要求字符串不能全部是字母、小写字母和数字的组合、小写字母和下划线的组合、大写字母和数字的组合、大写字母和下划线的组合,且必须至少包含一个字母、一个数字和一个下划线,不能是其他特殊符号,字符串长度至少11位。
注:密码需要输入特殊符号,而不是单一下滑线的写法:在所有写下划线的地方添加其他符号即可:(?![a-z_@#$%!]+$)