Regular Expressions
Regex de validation du mot de passe
Recherche…
Un mot de passe contenant au moins 1 majuscule, 1 minuscule, 1 chiffre, 1 caractère spécial et une longueur d'au moins 10
Comme les caractères / chiffres peuvent être n'importe où dans la chaîne, nous avons besoin de points de référence. Les lookaheads sont de zero width
ce qui signifie qu'ils ne consomment aucune chaîne. En termes simples, la position de la vérification se réinitialise à la position d'origine après chaque condition de recherche.
Hypothèse : - Considérer les caractères non-verbaux comme spéciaux
^(?=.{10,}$)(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*\W).*$
Avant de procéder à l'explication, jetons un coup d'oeil à la façon dont l'expression rationnelle ^(?=.*[az])
fonctionne (la longueur n'est pas prise en compte ici ) sur la chaîne 1$d%aA
Crédit image : - https://regex101.com/
Choses à remarquer
- La vérification est lancée depuis le début de la chaîne en raison de la balise d'ancrage
^
. - La position de vérification est réinitialisée au démarrage après que la condition de recherche est satisfaite.
Ventilation des regex
^ #Starting of string
(?=.{10,}$) #Check there is at least 10 characters in the string.
#As this is lookahead the position of checking will reset to starting again
(?=.*[a-z]) #Check if there is at least one lowercase in string.
#As this is lookahead the position of checking will reset to starting again
(?=.*[A-Z]) #Check if there is at least one uppercase in string.
#As this is lookahead the position of checking will reset to starting again
(?=.*[0-9]) #Check if there is at least one digit in string.
#As this is lookahead the position of checking will reset to starting again
(?=.*\W) #Check if there is at least one special character in string.
#As this is lookahead the position of checking will reset to starting again
.*$ #Capture the entire string if all the condition of lookahead is met. This is not required if only validation is needed
Nous pouvons également utiliser la version non gourmande de la regex ci-dessus
^(?=.{10,}$)(?=.*?[a-z])(?=.*?[A-Z])(?=.*?[0-9])(?=.*?\W).*$
Un mot de passe contenant au moins 2 majuscules, 1 minuscule, 2 chiffres et d'une longueur d'au moins 10
Cela peut être fait avec un peu de modification dans la regex ci-dessus
^(?=.{10,}$)(?=(?:.*?[A-Z]){2})(?=.*?[a-z])(?=(?:.*?[0-9]){2}).*$
ou
^(?=.{10,}$)(?=(?:.*[A-Z]){2})(?=.*[a-z])(?=(?:.*[0-9]){2}).*
Voyons comment une expression rationnelle simple ^(?=(?:.*?[AZ]){2})
fonctionne sur la chaîne abcAdefD
Crédit image : - https://regex101.com/