本篇整理了一些常用检查密码复杂度的正则表达式,可以根据实际情况稍作修改,请自行取用!
- 密码必须包含字母、数字和特殊符号(特殊符号可以是:`~!@#$%^&*()-=_+;':",./<>?,可以根据实际情况修改),且长度是6-32位:
^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[`~!@#$%^&*()-=_+;':",./<>?])(?=\S+$).{6,32}$
- 密码是8-16位字母和数字组合
^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$
- 密码必须包含大写、小写、数字和特殊字符,且长度是8位以上
^(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])(?=.*[`~!@#$%^&*()-=_+;':",./<>?])(?=\S+$).{8,}$
使用方式
public class Test {
    public static void main(String[] args) throws Exception {
        System.out.println(isValidPassword("111111")); //false
        System.out.println(isValidPassword("Abc,123")); //true
        System.out.println(isValidPassword2("Abcd1234")); //true
    }
    /**
     * 检查密码是否是6-32位包含字母、数字和特殊符号
     */
    public static boolean isValidPassword(String password) {
        if (password == null) {
            return false;
        }
        // 直接使用String.matches
        return password.matches("^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[`~!@#$%^&*()-=_+;':\",./<>?])(?=\\S+$).{6,32}$");
    }
    /**
     * 检查密码是否是8位以上包含字母、数字(不得包含特殊字符)
     */
    public static boolean isValidPassword2(String password) {
        if (password == null) {
            return false;
        }
        // 直接正则
        Pattern p = Pattern.compile("^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,}$");
        Matcher m = p.matcher(password);
        return m.matches();
    }
}

文章评论