Ich habe gerade diese Klasse für eine Validierung Passwort erstelltJava Regex Ausdrücke für Passwörter
/*
*^ Start anchor
* (?=.*[A-Z].*[A-Z]) Ensure string has two uppercase letters.
* (?=.*[[email protected]#$&*]) Ensure string has one special case letter.
* (?=.*[0-9].*[0-9]) Ensure string has two digits.
* (?=.*[a-z].*[a-z].*[a-z]) Ensure string has three lowercase letters.
* .{8} Ensure string is of length 8.
* $ End anchor.
*/
public class PasswordUtils {
private static final String PWD_REGEX = "^(?=.*[A-Z].*[A-Z])(?=.*[[email protected]#$&*])(?=.*[0-9].*[0-9])(?=.*[a-z].*[a-z].*[a-z])";
/**
* Non instantiable.
*/
private PasswordUtils() {
throw new AssertionError("Non instantiable");
}
public static boolean match (String pwd1, String pwd2) {
return StringUtils.equals(pwd1, pwd2);
}
public static boolean isStrong(String password){
return password.matches(PWD_REGEX);
}
}
Dann dieser Junit, aber es scheint, dass die Entsenderichtlinie nicht den Anforderungen des regulären Ausdrucks übereinstimmen
private final String PWD6 = "Pi89pR&s";
@Test
public void testStrong() {
assertTrue(PasswordUtils.isStrong(PWD6));
}
Es ist einfacher, nicht Regex zu verwenden. Iterieren Sie die Zeichenfolge einfach um jeweils ein Zeichen, wobei Sie die Anzahl der Groß- und Kleinbuchstaben usw. zählen. Stellen Sie dann sicher, dass die Werte Ihren Kriterien entsprechen. –