簡體   English   中英

用於密碼驗證的字母數字JavaScript RegEx

[英]Alphanumeric JavaScript RegEx for Password Validation

我正在使用下面的正則表達式驗證密碼只接受字母數字字符。 如果我輸入2個字符一個alpha和一個數字但是如果超過兩個字符我的正則表達式不起作用,則正則表達式有效。 如果可能,我希望以下結果如“預期行為”中所示。 任何人都可以幫我改寫我的正則表達式嗎?

JavaScript的

  function checkPasswordComplexity(pwd) {
        var regularExpression = /^[a-zA-Z][0-9]$/;
        var valid = regularExpression.test(pwd);
        return valid;
    }

當前行為

Password:Valid
a1:true
aa1:false
aa11:false

預期的行為

Password:Valid
aa:false (should have at least 1 number) 
1111111:false (should have at least 1 letter)
aa1:true
aa11:true
a1a1a1a1111:true

你想添加“一個或多個”,你正在檢查一個字母后跟一個數字。

嘗試:

/^[a-zA-Z0-9]+$/

+表示'一個或多個'

我也加入了范圍。

注意:我不明白為什么你想要將密碼限制在如此小的范圍內,但是具有寬字符范圍會使你的密碼變得更強

這是一個證明正確行為的小提琴

如果您只想驗證密碼至少有一個字母和至少一個數字,您可以這樣檢查:

function checkPasswordComplexity(pwd) {
    var letter = /[a-zA-Z]/; 
    var number = /[0-9]/;
    var valid = number.test(pwd) && letter.test(pwd); //match a letter _and_ a number
    return valid;
}

試着這樣做:

var regularExpression = /^[a-zA-Z0-9]+$/;

這意味着“一個或多個字母或數字”。

但是,某些用戶可能還希望在其密碼中輸入符號(如&*# )。 如果您只想確保在允許符號時至少有一個字母和數字,請嘗試以下方法:

var regularExpression = /^(?=.*[a-zA-Z])(?=.*[0-9]).+$/;

(?=.*[a-zA-Z])是一個積極的先行。 這意味着它確保前面有一個字母,但它不會影響正則表達式。

你可以用這個:

/^(?=.*\d)(?=.*[a-z])[a-z\d]{2,}$/i
function checkPasswordComplexity(pwd) {
        var regularExpression = /^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$/;
        var valid = regularExpression.test(pwd);
        return valid;
    }
{
var pwd=document.getElementById('pwd').value;
var reg = /^[a-zA-Z0-9]{8,}$/;  
var re=reg.test(pwd);
alert(re);

}

我認為javascript不支持環視,因此您可以使用:

^([a-zA-Z]+\d+)|(\d+[a-zA-Z]+)

但如果他們得到支持:

/^(?=.*\d)(?=.*[a-zA-Z])[a-zA-Z\d]{2,}$/

暫無
暫無

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

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