Je voulais faire une fonction dans JS qui valide un mot de passe. Le mot de passe doit avoir au moins 8 et au plus 32 caractères, au moins une lettre majuscule, une lettre minuscule et un nombre. En outre, il devrait renvoyer 1 quand il remplit toutes les exigences et 0 quand ce n'est pas le cas.
Mon programme renvoie une valeur booléenne, mais même quand c'est vrai, il continue de retourner 0. Que dois-je faire?
3 Réponses :
const pattern = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])([0-9a-zA-Z]{8,32})$/ function validate(password){ return pattern.test(password) ? 1 : 0; } console.log(validate("Password10"))
Vous mettez la mise en valeur de l'existence de votre variable de regex compilée.
Ceci fonctionne: p>
p>
var passRegex = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])([0-9a-zA-Z]{8,32})$/ function isPasswordValid(p) { return passRegex.test(p) ? 1 : 0; } console.log(isPasswordValid("Password10")); console.log(isPasswordValid("Pass0"));
Vous avez oublié de sauvegarder le résultat de votre méthode de test code> de votre code> à la variable et que vous le mettez en si. C'est pourquoi même s'il était vrai code> il n'est jamais allé à l'intérieur de la déclaration IF. Enregistrez-le d'abord à la variable, puis comparez-la si comme celui-ci
var validatePassword = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])([0-9a-zA-Z]{8,32})$/
let result = validatePassword.test("Password10")
console.log(result)
if (result == true) {
console.log("1")
} else {
console.log("0")
}