簡體   English   中英

驗證密碼 - 必須包含 2 個大寫字母

[英]Validate password - must contain 2 capital letters

有人能告訴我為什么這個功能不起作用嗎? 密碼長度和數字檢查工作完美。 但是大寫的支票有點不對勁……

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

還是我必須使用正則表達式?

如果您打算使用正則表達式來查找兩個大寫字母,那么您可以使用像

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

在 regextester 上測試這里

在這里檢查一下Fiddle

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

我開發了簡單的功能來生成密碼

這是一個返回帶有消息和布爾值的對象的函數。

示例片段:

 function testPassword(pwd) { if (pwd.length <= 6) return { valid: false, message: "Please make sure password is longer than 6 characters." }; if(!/[AZ].*[AZ]/.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")
    }
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM