J'utilise l'expression rationnelle suivante pour valider la complexité du mot de passe:Aide à la complexité du mot de passe regex
/^.*(?=.{6,12})(?=.*[0-9]{2})(?=.*[A-Z]{2})(?=.*[a-z]{2}).*$/
En bref: 2 minuscules, 2 majuscules, 2 numéros, longueur min est 6 et la longueur maximale est de 12.
Cela fonctionne parfaitement, sauf pour la longueur maximale, lorsque j'utilise aussi une longueur minimale.
Par exemple:
/^.*(?=.{6,})(?=.*[0-9]{2})(?=.*[A-Z]{2})(?=.*[a-z]{2}).*$/
Cette correctement nécessite une longueur minimale de 6!
Et ceci:
/^.*(?=.{,12})(?=.*[0-9]{2})(?=.*[A-Z]{2})(?=.*[a-z]{2}).*$/
nécessite correctement une longueur maximale de 12.
Cependant, quand je les jumeler ensemble comme dans le premier exemple, il ne fonctionne tout simplement pas !!
Ce qui donne? Merci!
une raison particulière pour laquelle vous voulez empêcher quelqu'un d'avoir un mot de passe de plus de 13 caractères (et donc plus sécurisé)? – nickf
Certains systèmes ont en fait une longueur maximale de mot de passe qu'ils peuvent accepter, je me souviens de mon vieux réseau unix/windows combiné à l'uni, nous ne pouvions pas avoir plus de 8 caractères. – hhafez
À moins d'une limitation technique inévitable imposant une limite stricte à la longueur du mot de passe (comme dans la situation de @ hhafez), la meilleure pratique est de ne pas limiter inutilement la longueur du mot de passe (comme l'a dit @nickf). Ce n'est pas comme si vous deviez stocker le mot de passe, de toute façon - seulement son hash, qui est généralement de la même longueur que le mot de passe soit 2 caractères ou 200. –