Quelle est l'expression régulière pour s'assurer qu'une chaîne donnée contient au moins un caractère de chacune des catégories suivantes.
- Caractère minuscule
- Caractère majuscule
- Chiffre
- symbole
Je sais que les modèles pour des jeux individuels à savoir [a-z]
, [A-Z]
, \d
et _|[^\w]
(j'ai eu les corriger, non?).
Mais comment puis-je les combiner pour m'assurer que la chaîne contient tout cela dans n'importe quel ordre?
Réponses:
Si vous avez besoin d'une seule expression régulière, essayez:
Une brève explication:
Et je suis d'accord avec SilentGhost,
\W
pourrait être un peu large. Je le remplacerais par un jeu de caractères comme celui-ci:[-+_!@#$%^&*.,?]
(n'hésitez pas à en ajouter bien sûr!)la source
.+
en.*
? Je n'ai pas pu trouver un cas de test qui échoue.*
. Sont-ils identiques dans ce contexte? "Zéro caractères ou plus" semble être bien - il suffit de chercher une confirmation..+
en.*
ou même.{4,}
d'ailleurs.^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?!.*[&%$]).{6,}$
Bart Kiers, votre regex a quelques problèmes. La meilleure façon de procéder est la suivante:
De cette façon, vous recherchez que ce soit au début, à la fin ou au milieu. Dans votre cas, j'ai beaucoup de problèmes avec les mots de passe complexes.
la source
Vous pouvez faire correspondre ces trois groupes séparément et vous assurer qu'ils sont tous présents. De plus, cela
[^\w]
semble un peu trop large, mais si c'est ce que vous voulez, vous voudrez peut-être le remplacer\W
.la source
\W
et le[\W]
résultat est le même.