验证密码-必须包含2个大写字母

时间:2020-01-30 17:11:22

标签: javascript validation passwords

有人可以告诉我为什么这个功能不起作用吗?密码长度和数字检查功能完美配合。但这对大写字母的支票有问题...

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 :(得分:0)

如果您打算使用正则表达式查找两个大写字母,则可以使用like

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

在后半生测试此here

答案 1 :(得分:0)

在这里查看Fiddle

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

我开发了简单的密码生成功能

答案 2 :(得分:0)

这是一个返回带有消息和布尔值的对象的函数。

示例片段:

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