java正则校验密码 长度不少于8位且至少包含大写字母、小写字母、数字和特殊符号中的四种组合 或者 其中任意三种组合 您所在的位置:网站首页 特殊的组合数 java正则校验密码 长度不少于8位且至少包含大写字母、小写字母、数字和特殊符号中的四种组合 或者 其中任意三种组合

java正则校验密码 长度不少于8位且至少包含大写字母、小写字母、数字和特殊符号中的四种组合 或者 其中任意三种组合

2023-09-09 23:23| 来源: 网络整理| 查看: 265

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

一、排除法和详细解释

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

  2、表达式为:^(?![A-Za-z0-9]+$)(?![a-z0-9\\W]+$)(?![A-Za-z\\W]+$)(?![A-Z0-9\\W]+$)[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)$匹配字符串结尾

二、测试代码

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"); } }



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有