import java.util.ArrayList; import java.util.List; import java.util.Scanner; /** * Created by Administrator on 2019/12/17 */ public class PassWord_Check { public static final String PW_PATTERN = "^(?![A-Za-z0-9]+$)(?![a-z0-9\W]+$)(?![A-Za-z\W]+$)(?![A-Z0-9\W]+$)[a-zA-Z0-9\W]{8,}$"; public static void main(String []args ) { Scanner input = new Scanner(System.in); System.out.println("请输入字符!"); String password=input.nextLine(); boolean a1=false; if (password.length() >7 ) { a1=true; System.out.println("1.满足长度不小于8~"); } //判断不为空,并且长度不小于8 else{ System.out.println("1.不满足长度不小于8~"); } boolean a2=false; if (password.matches(PW_PATTERN)){ a2=true; System.out.println("2.满足有小写,大写,数字,特殊字符!"); } else{ System.out.println("2.不满足必须包含大写,小写,数字,特殊字符!"); } //判断有数字,字母,特殊字符 boolean a3=new PassWord_Check().test5(password); if (a3==true){ System.out.println("3.满足键盘不连续"); } else{ System.out.println("3.不满足键盘不连续."); } //判断字母键盘是否连续,符合不连续,返回真,否则,返回假 String [] dict=new String[]{"password","admin","root", "012","123","234","345","456","567","678","789","987", "876","765","654","543","432","321","210"}; boolean a4=true; for (String s:dict){ if (password.contains(s)){ a4=false; //判断不包含连续数字,以及保留字,用的穷举 } } int ans=0; if (a1==true){ if (a2==true){ if (a3==true){ if (a4==true){ ans=1; //全部满足条件,设为1,用作后用 } } } } if (ans==1){ System.out.println("符合规范"); } else{ System.out.println("不符合规范"); } } //判断键盘不连续 boolean test5(String password) { char[][] keyCode = { {'q','w','e','r','t','y','u','i','o','p'}, {'a','s','d','f','g','h','j','k','l'}, {'z','x','c','v','b','n','m'} }; char[] c = password.toCharArray(); List<Integer> x = new ArrayList<Integer>(); List<Integer> y = new ArrayList<Integer>(); for (int i = 0; i < c.length; i++) { char temp = c[i]; toHere: for(int j=0;j<keyCode.length;j++){ for(int k=0;k<keyCode[j].length;k++){ if(temp== keyCode[j][k]){ x.add(j); y.add(k); break toHere; } } } } boolean flag= true; for(int i=0;i<x.size()-2;i++){ // x b if(x.get(i)==x.get(i+1)&&x.get(i+1) == x.get(i+2)){//三者在同一y行上 if(y.get(i)>y.get(i+2)){ if( y.get(i)-1 == y.get(i+1) && y.get(i)-2 == y.get(i+2)){ flag=false; break; } }else{ if( y.get(i)+1 == y.get(i+1) && y.get(i)+2 == y.get(i+2)){ flag=false; break; } } }else if(x.get(i)!=x.get(i+1)&&x.get(i+1) != x.get(i+2) &&x.get(i)!=x.get(i+2)){//三者均不在同一行上 if(x.get(i)>x.get(i+2)){ if((x.get(i)-1 == x.get(i+1) && x.get(i)-2 == x.get(i+2))){ flag=false; } }else{ if( x.get(i)+1 == x.get(i+1) && x.get(i)+2 == x.get(i+2)){ flag=false; break; } } } } return flag; } }