[Java]正则表达式检查密码符合复杂度要求

2021-07-15 42点热度 0人点赞 0条评论

本篇整理了一些常用检查密码复杂度的正则表达式,可以根据实际情况稍作修改,请自行取用!

  • 密码必须包含字母、数字和特殊符号(特殊符号可以是:`[email protected]#$%^&*()-=_+;':",./<>?,可以根据实际情况修改),且长度是6-32位:
^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[`[email protected]#$%^&*()-=_+;':",./<>?])(?=\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])(?=.*[`[email protected]#$%^&*()-=_+;':\",./<>?])(?=\\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();
    }

}

 

admin

这个人很懒,什么都没留下

文章评论

*

code