0
votes

Valider le mot de passe - doit contenir 2 lettres majuscules

Quelqu'un peut-il me dire pourquoi cette fonction ne fonctionne pas? la longueur du mot de passe et la vérification du nombre fonctionnent parfaitement. Mais il y a quelque chose qui ne va pas avec la vérification des grandes capitales ...

function validera() {
var passw = document.getElementById("User-Password").value;
var upper = /[A-Z]/ ;
var number = /[0-9]/;

if (passw.length < 6 || !number.test(passw) || !upper.test(passw)) {
    if (passw.length < 6) {
        alert("Please make sure password is longer than 6 characters.")
        return false;
    }

    var counter = 0;
    var i;
    for(i = 0; i < passw.length; i++){
       passw.charAt(i)
       if(upper.test(passw.charAt(i))){
           counter++;
           break;
       }
   }

    if( counter < 2 ){
        alert("Please make sure password includes 2 capital letters")
        return false;

    }

    if (!number.test(passw)) {
        alert("Please make sure Password Includes a Digit")
        return false;
    }

} else {
    alert("Account created")
}

Ou dois-je utiliser regex?


4 commentaires

Votre instruction break rompt la boucle dès que vous rencontrez la première lettre majuscule. Ainsi, votre compteur sera toujours 1.


Pourquoi faire une boucle quand 1 test regex ferait l'affaire? if (! / [A-Z]. * [A-Z] /. test (passw)) {alert ('Cap me two!'); return false;}


Ça ne marche toujours pas? if (! / [A-Z]. * [A-Z] /. test (passw)) {alert ('Cap me two!'); return false;} est-ce juste comme ça? je n'ai jamais utilisé de regex auparavant


Je peux toujours écrire "test1A"


3 Réponses :


0
votes

Si vous prévoyez d'utiliser regex pour trouver deux lettres majuscules, vous pouvez utiliser comme

\w*[A-Z]\w*[A-Z]\w*

Testez ceci ici sur regextester


0 commentaires

0
votes

Ici, vérifiez Fiddle

CreateRandomPassword(Length, isUpperAlpha, isLowerAlpha, isNumaric ,SpecialChars)

J'ai développé une fonction facile pour générer un mot de passe


0 commentaires

0
votes

Voici une fonction qui renvoie un objet avec un message et un booléen.

Exemple d'extrait:

function validera() {
    let passw = document.getElementById("User-Password").value;
    let check = testPassword(passwd);
    if (check.valid) {
        alert(check.message);
        return false;
    }
     else {
        alert("Account created")
    }
  }

Ensuite, votre fonction peut être simplifiée.

function testPassword(pwd) {

   if (pwd.length <= 6) 
        return { valid: false, message: "Please make sure password is longer than 6 characters." };
    
   if(!/[A-Z].*[A-Z]/.test(pwd))
        return { valid: false, message: "Please make sure password includes 2 capital letters" };

   if (!/\d/.test(pwd)) 
        return { valid: false, message: "Please make sure Password Includes a Digit" };

   if (/\s/.test(pwd)) 
        return { valid: false, message: "Please only use visible characters" };

   return { valid: true, message: "Valid Password" };
}
 
console.log(testPassword('Val1dPassword')); 
console.log(testPassword('SH0rt')); 
console.log(testPassword('No2capitals')); 
console.log(testPassword('NoDigits'));
console.log(testPassword('Has\tat least 1 WhiteSpace'));
 


0 commentaires