Подтвердите пароль - должен содержать 2 заглавные буквы - PullRequest
0 голосов
/ 30 января 2020

Может кто-нибудь сказать мне, почему эта функция не работает? длина пароля и проверка номера работают отлично. Но что-то не так с проверкой больших капиталов ...

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")
}

Или я должен использовать регулярное выражение?

Ответы [ 3 ]

0 голосов
/ 31 января 2020

Здесь Проверьте это Fiddle

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

Я разработал простую функцию для генерации пароля

0 голосов
/ 31 января 2020

Вот функция, которая возвращает объект с сообщением и логическим значением.

Пример фрагмента:

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'));
 

Тогда ваша функция может быть упрощена.

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")
    }
  }
0 голосов
/ 30 января 2020

Если вы планируете использовать регулярные выражения, чтобы найти две заглавные буквы, вы можете использовать как

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

Проверьте это здесь на регулярном выражении

...