一致するパスワード検証用の正規表現を作成する必要があります
例えば。
abcdABCD1234$%^
パスワードには、少なくとも 2 つの小文字、2 つの大文字、2 つの数字、および 2 つの特殊文字を含める必要があります。しかし、彼らはこの基準以上のものを与えることができます
注 - パターンは順序付けられている必要があります。
String pattern="(?=.*[a-z]{2,})(?=.*[A-Z]{2,})(?=.*[0-9]{2,})(?=.*[@#$%&]{2,})";
それは私のために働いていますが、順序をチェックしていないため、AB大文字または任意の文字がab(小文字)の前に来てはなりません。
それはあなたにとって明らかですか?
String minNum="4";
String max="20";
String REGEX="(^(?!.*(d))(?=.*[a-z]{3,})(?=.*[A-Z]{2,})(?=.*[0-9]{3,})(?=.[@#$%&*><?+]{2,})^(?!.*(#r)).{"+minNum+","+max+"})";
//String regex="(?=.*[a-z]{2,})(?=.*[A-Z]{2,})(?=.*[0-9]{2,})(?=.*[@#$%&]{2,})";
String INPUT ="acABC1333323@#";
Pattern p = Pattern.compile(REGEX);
Matcher m = p.matcher(INPUT);
System.out.println(m.matches());
正しく動作していますが、パスワード「ABac1333323@#」を変更しています。それも一致しますが、ABが1次であるため、私の要件によれば正しいです。