[JAVA] REGEX complexe
dream'
Messages postés
4
Statut
Membre
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour,
J'essaye d'écrire une expression rationelle me permettant de vérifier si mon mot de passe contient au moins 3 des 4 paramètres suivants :
- Une minuscule
- Une majuscule
- Un caractere special
- Un nombre
J'en ai mis une au point me permettant de vérifier si l'ensemble des paramètres sont présents. Existe un moyen de savoir si seulement 3 des 4 ont ete entrés par l'utilisateur ?
Merci d'avance.
Cordialement,
J'essaye d'écrire une expression rationelle me permettant de vérifier si mon mot de passe contient au moins 3 des 4 paramètres suivants :
- Une minuscule
- Une majuscule
- Un caractere special
- Un nombre
J'en ai mis une au point me permettant de vérifier si l'ensemble des paramètres sont présents. Existe un moyen de savoir si seulement 3 des 4 ont ete entrés par l'utilisateur ?
Merci d'avance.
Cordialement,
1 réponse
-
Pourquoi chercher à faire une expression régulière pour ce genre de tests ?
L'analyse d'une regex complexe sera nettement plus longue en temps de calculs qu'une petite boucle qui teste les caractères un à un, en Java ça n'a donc pas d'utilité.
public static int verif(String str) { boolean min=false, maj=false, num=false, spe=false; for (char ch : str.toCharArray()) { min |= Character.isLowerCase(ch); maj |= Character.isUpperCase(ch); num |= Character.isDigit(ch); spe |= !Character.isLetterOrDigit(ch); if (min && maj && num && spe) break; } int n=0; if (min) n++; if (maj) n++; if (num) n++; if (spe) n++; return n; } public static void main(String...args) { System.out.println(verif("AZERTY")); // 1 System.out.println(verif("qwerty")); // 1 System.out.println(verif("123456")); // 1 System.out.println(verif("+-*/%=")); // 1 System.out.println(verif("AWerty")); // 2 System.out.println(verif("1+2=12")); // 2 System.out.println(verif("Az2*m7")); // 4 }