java密码复杂度 正则校验

普通使用:

密码校验(密码要求最小长度8-20位,由数字、字符、字母大小写其中三种组成!):
public static final String password = "^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\\W_]+$)(?![a-z0-9]+$)(?![a-z\\W_]+$)(?![0-9\\W_]+$)[a-zA-Z0-9\\W_]{8,20}$";

手机校验:
public static final String pattern = "^[1][3,5,7,8]\\d{9}$";
public static final String pattern = "^[1]([3-9])[0-9]{9}$";


java正则校验密码必须是包含大小写字母、数字、特殊符号的8位以上四种组合 或者 其中任意三种组合
一、排除法和详细解释

1、排除大写字母、小写字母、数字、特殊符号中1种组合、2种组合、3种组合,那么就只剩下4种都包含的组合了

2、表达式为:^(?![A-Za-z0-9]+ ) ( ? ! [ a − z 0 − 9 W ] + )(?![a-z0-9\\W]+ )(?![az09W]+)(?![A-Za-z\W]+ ) ( ? ! [ A − Z 0 − 9 W ] + )(?![A-Z0-9\\W]+ )(?![AZ09W]+)[a-zA-Z0-9\W]{8,}$

3、拆分解释:其中(2)-(6)运用了零宽断言、环视等正则功能

(1)^匹配开头

(2)(?![A-Za-z0-9]+$)匹配后面不全是(大写字母或小写字母或数字)的位置,排除了(大写字母、小写字母、数字)的1种2种3种组合

(3)(?![a-z0-9\W]+$)同理,排除了(小写字母、数字、特殊符号)的1种2种3种组合

(4)(?![A-Za-z\W]+$)同理,排除了(大写字母、小写字母、特殊符号)的1种2种3种组合

(5)(?![A-Z0-9\W]+$)同理,排除了(大写字母、数组、特殊符号)的1种2种3种组合

(6)[a-zA-Z0-9\W]匹配(小写字母或大写字母或数字或特殊符号)因为排除了上面的组合,所以就只剩下了4种都包含的组合了

(7){8,}8位以上

(8)$匹配字符串结尾

密码长度不少于8位且至少包含大写字母、小写字母、数字和特殊符号中的四种:
^(?![A-Za-z0-9]+ ) ( ? ! [ a − z 0 − 9 W ] + )(?![a-z0-9\\W]+ )(?![az09W]+)(?![A-Za-z\W]+ ) ( ? ! [ A − Z 0 − 9 W ] + )(?![A-Z0-9\\W]+ )(?![AZ09W]+)[a-zA-Z0-9\W]{8,}$
密码长度8-20位且至少包含大写字母、小写字母、数字或特殊符号中的任意三种:
^(?![a-zA-Z]+ ) ( ? ! [ A − Z 0 − 9 ] + )(?![A-Z0-9]+ )(?![AZ09]+)(?![A-Z\W_]+ ) ( ? ! [ a − z 0 − 9 ] + )(?![a-z0-9]+ )(?![az09]+)(?![a-z\W_]+ ) ( ? ! [ 0 − 9 W ] + )(?![0-9\\W_]+ )(?![09W]+)[a-zA-Z0-9\W_]{8,20}$

public class PasswordTest {
    // 密码长度不少于8位且至少包含大写字母、小写字母、数字和特殊符号中的四种
    public static final String password1 = "^(?![A-Za-z0-9]+$)(?![a-z0-9\\W]+$)(?![A-Za-z\\W]+$)(?![A-Z0-9\\W]+$)[a-zA-Z0-9\\W]{8,}$";
    // 密码长度8-20位且至少包含大写字母、小写字母、数字或特殊符号中的任意三种
    public static final String password = "^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\\W_]+$)(?![a-z0-9]+$)(?![a-z\\W_]+$)(?![0-9\\W_]+$)[a-zA-Z0-9\\W_]{8,20}$";
 
    public static void main(String[] args) {
        String password1 = "ABCDEFGHIG";  //全部大写
        String password2 = "abcdefghig";  //全部小写
        String password3 = "0123456789";  //全部数字
        String password4 = "!@#$%^&*()";  //全部特殊字符
        String password5 = "ABCDEabcde";  //大写和小写
        String password6 = "ABCDE01234";  //大写和数字
        String password7 = "ABCDE!@#$%";  //大写和特殊字符
        String password8 = "abcde01234";  //小写和数字
        String password9 = "abcde!@#$%";  //小写字母和特殊字符
        String password10 = "01234!@#$%"; //数字和特殊字符
        String password11 = "Aa4!";       //长度不够8位数
        String password12 = "ABCDE01234!@#$%"; //符合要求密码任意三种
        String password13 = "ABCDEabcde!@#$%"; //符合要求密码任意三种
        String password14 = "ABCDEabcde01234"; //符合要求密码任意三种
        String password15 = "abcde01234!@#$%"; //符合要求密码任意三种
        String password16= "ABCabc012@#"; //符合要求密码任意三种 和 符合全部的四种
 
        System.out.println(password1.matches(password) + " 1");
        System.out.println(password2.matches(password)+ " 2");
        System.out.println(password3.matches(password)+ " 3");
        System.out.println(password4.matches(password)+ " 4");
        System.out.println(password5.matches(password)+ " 5");
        System.out.println(password6.matches(password)+ " 6");
        System.out.println(password7.matches(password)+ " 7");
        System.out.println(password8.matches(password)+ " 8");
        System.out.println(password9.matches(password)+ " 9");
        System.out.println(password10.matches(password)+ " 10");
        System.out.println(password11.matches(password)+ " 11");
        System.out.println(password12.matches(password)+ " 12");
        System.out.println(password13.matches(password)+ " 13");
        System.out.println(password14.matches(password)+ " 14");
        System.out.println(password15.matches(password)+ " 15");
        System.out.println(password16.matches(password)+ " 16");
    }
}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值