Regex mot de passe PHP
RésoluDarikl -
Bonjour, je suis un peu naze en Regex donc je voudrais si quelqu'un a ça ou sait faire ça une regex qui valide un mot de passe conforme :
- 12 caractères
- au moins une majuscule
- au moins une minuscule
- au moins un caractère spéciale (@€[$]!?_-...)
Pour faire ça j'utiliserai un preg_match()
J'ai ça mais j'ai remarqué que ça n'accepte pas tous les caractères spéciaux comme le _ :
preg_match('#^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*\W).{12,}$#')
Si vous avez des idées ça pourrait m'aider grandement, merci d'avance.
- Regex mot de passe PHP
- Trousseau mot de passe iphone - Guide
- Mot de passe - Guide
- Mot de passe administrateur - Guide
- Mot de passe bios perdu - Guide
- Voir mot de passe wifi android - Guide
3 réponses
Bonjour,
Déjà, tu peux construire et tester tes regex ici : https://regex101.com/
Ensuite, niveau pattern, tu pourrais partir sur un truc du genre :
(?=.*[!@#$%^&*-_])(?=.*[0-9])(?=.*[A-Z]).{12,30}
Bonjour,
Quels sont tes cas de tests ?
Chez moi ces deux chaines matchent bien, je ne vois pas le problème.
rE@1!_8-$1gy
rE@1!#8-$1gy
Je teste ça ici : https://regex101.com/
Ok j'ai trouvé
Tu as écrit :
preg_match('#^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*\W).{12,}$#')
Alors que tu veux :
preg_match('#^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*\w).{12,}$#')
La différence est le \w au lieu du \W sur la fin.
EDIT : et même il te faudrait :
preg_match('#^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[@€\[$\]!?_-]).{12,}$#')
Je viens de tester la tienne elle prend bien le _ comme caractère spéciale par contre on peut faire des mots de passes uniquement en majuscule alors qu'il faudrait une minuscule au moins