J'ai besoin de faire un validateur de modèle de mot de passe
le mot de passe doit avoir:
J'ai trouvé ce motif de regex:
Validators.pattern('/^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d!$%@#£€*?&]')
cependant, le validateur prétend toujours que ma saisie est invalide
errors:
pattern:
actualValue: "Test1234"
requiredPattern: "^/^(?=.*[A-Za-z])(?=.*d)[A-Za-zd!$%@#£€*?&]$"
selon https://regex101.com/r/AfAdKp/1 cette valeur est supposée être valide.
Edit: pour clarifier, Test1234 est supposé fonctionner
Vous avez plusieurs problèmes avec votre expression rationnelle actuelle:
Validators.pattern
n'a pas besoin de délimiteurs mais vous en avez jeté un au débutCe dont vous avez besoin est ceci:
Validators.pattern('^(?=[^A-Z]*[A-Z])(?=[^a-z]*[a-z])(?=\\D*\\d)[A-Za-z\\d!$%@#£€*?&]{8,}$');
Voir démo en direct ici
Vous devez ajouter le quantificateur [A-Za-z\d!$%@#£€*?&]{8,}
pour répéter la classe de caractères au moins 8 fois et séparer les assertions pour un caractère majuscule et minuscule:
Validators.pattern('^(?=.*[A-Z])(?=.*[a-z])(?=.*\\d)[A-Za-z\\d!$%@#£€*?&]{8,}$')
^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)[A-Za-z\d!$%@#£€*?&]{8,}$
^
Assert la position au début de la chaîne(?=.*[A-Z])
Lookahead positif pour affirmer que ce qui suit est un caractère majuscule(?=.*[a-z])
Lookahead positif pour affirmer que ce qui suit est un caractère minuscule(?=.*\d)
Lookahead positif pour affirmer que ce qui suit est un chiffre[A-Za-z\d!$%@#£€*?&]{8,}
Faites correspondre au moins un personnage dans la classe de personnage 8 fois ou plus$
Assert la position à la fin de la ligneconst strings = [
"A88888jf",
"Aa88888jf",
"Aa888jf",
"AAAAAAAAAAA",
"aaaaaaaaaaaaaa",
"2222222222222222",
"1sAdfe44",
"$#fd#######"
];
let pattern = /^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)[A-Za-z\d!$%@#£€*?&]{8,}$/;
strings.forEach((s) => {
console.log(s + " ==> " + pattern.test(s));
});