[英]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.