Vérification d'une chaîne contenant 3 lettres consécutives et 2 chiffres dans n'importe quel ordre

Je ne peux pas m'empêcher de penser à celui-ci et j'ai pensé que je demanderais de l'aide ici!

En principe, je valide un champ de mot de passe et les exigences sont les suivantes:
– Doit contenir 3 lettres consécutives
– Doit contenir au moins 2 chiffres
– Peut être dans n'importe quel ordre (ex. 1abc342, abc24g3, 11abcsjf)

Voici ce que j'ai jusqu'ici, mais je crois qu'il faut faire quelques ajustements:
/ [Az] {3} [0-9] [0-9] / i

Vous devriez probablement le faire dans deux expressions régulières distinctes: une pour tester trois lettres consécutives et une pour tester au moins deux chiffres:

/[az]{3}/i /\d.*d/ 

Assurez-vous que les deux conditions sont respectées. Vous pourriez utiliser lookahead pour combiner ceci en un regex, mais je pense que deux regexes sont un code plus clair et une meilleure solution.

Mais si je peux m'inspirer de la question: à moins que vous n'ayez aucun contrôle sur ce sujet (le client a précisé cela), je recommande vivement de ne pas imposer de restrictions de mot de passe comme celle-ci. Ils rendent votre système de mots de passe beaucoup moins sécurisé, pas plus sécurisé. Quelques lectures sur pourquoi:

http://jimpravetz.com/blog/2011/06/cheap-gpus-are-rendering-strong-passwords-use/

http://jimpravetz.com/blog/2012/02/stupid-password-rules/

Le regex que vous décrivez peut être écrit de la manière suivante:

 /(?=.*?[az]{3})(?=.*?\d.*?\d)/ 

Le premier lookahead recherche trois lettres d'affilée, dans n'importe quelle position. Le deuxième lookahead recherche un chiffre dans n'importe quelle position, suivi d'un chiffre plus loin.