Oggi vediamo come validare le password in java utilizzando le regular expressions.

la regular expression che utilizzeremo è la seguente:

1
((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})

che va letta in questo modo:

1
2
3
4
5
6
7
8
(                    # inizio
(?=.*\d)                #   deve contenere almeno un numero da 0 a 9
(?=.*[a-z])            #   deve contenere almeno un carattere minuscolo
(?=.*[A-Z])             #   deve contenere almeno un carattere maiuscolo
(?=.*[@#$%])                #   deve contenere almeno un carattere spciale tra questi "@#$%"
.                    #     deve superare TUTTI i test precedenti
{6,20}                    #        la lunghezza edve essere minimo di 6 caratteri e massimo di 20
)                    # fine

scriviamo ora una semplice funzione in java che ci ritorna un boolean a seconda della validità della password:

1
2
3
4
5
6
public boolean checkPassword(String password){
   String passwordPattern = "((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{10,20})";
   java.util.regex.Pattern pattern = java.util.regex.Pattern.compile(passwordPattern);
   java.util.regex.Matcher matcher = pattern.matcher(password);
   return matcher.matches();
}

aluni esempi di password:

1) qweRF34#       è ok

2) asd45#34        non ha nessun carattere Maiuscolo

3) qwe3rt45DFR         non ha nessun carattere speciale

4) asD@3                 è troppo corta