// digit + lowercase char + uppercase char + punctuation + symbol
private static final String PASSWORD_PATTERN =
"^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#&()–[{}]:;',?/*~$^+=<>]).{8,20}$";
private static final Pattern pattern = Pattern.compile(PASSWORD_PATTERN);
public static boolean isValid(final String password) {
Matcher matcher = pattern.matcher(password);
return matcher.matches();
}
^ # Beginn der Zeile
(?=.*[0-9]) # positive Vorausschau, Ziffer [0-9]
(?=.*[a-z]) # positive Vorausschau, ein Kleinbuchstabe [a-z]
(?=.*[A-Z]) # positive Vorausschau, ein Großbuchstabe [A-Z]
(?=.*[!@#&()–[{}]:;',?/*~$^+=<>]) # positive Vorausschau, eines der Sonderzeichen in diesem [..]
. # passt auf alles
{8,20} # Länge mindestens 8 Zeichen und maximal 20 Zeichen
$ # Ende der Zeile