我正在使用下面的正则表达式来验证密码以仅接受字母数字字符。如果我输入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
答案 0 :(得分:12)
您想要添加“一个或多个”,您目前正在检查一个字母后跟一个数字。
尝试:
/^[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;
}
答案 1 :(得分:1)
尝试这样做:
var regularExpression = /^[a-zA-Z0-9]+$/;
这意味着“一个或多个字母或数字。”
但是,某些用户可能还希望在其密码中输入符号(如&*#
)。如果您只想确保在允许符号时至少有一个字母和数字,请尝试以下方法:
var regularExpression = /^(?=.*[a-zA-Z])(?=.*[0-9]).+$/;
(?=.*[a-zA-Z])
是一个积极的前瞻性。这意味着它确保前面有一个字母,但它不会影响正则表达式。
答案 2 :(得分:1)
您可以使用:
/^(?=.*\d)(?=.*[a-z])[a-z\d]{2,}$/i
答案 3 :(得分:1)
function checkPasswordComplexity(pwd) {
var regularExpression = /^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$/;
var valid = regularExpression.test(pwd);
return valid;
}
答案 4 :(得分:1)
{
var pwd=document.getElementById('pwd').value;
var reg = /^[a-zA-Z0-9]{8,}$/;
var re=reg.test(pwd);
alert(re);
}
答案 5 :(得分:0)
我认为javascript不支持环视,因此您可以使用:
^([a-zA-Z]+\d+)|(\d+[a-zA-Z]+)
但如果他们得到支持:
/^(?=.*\d)(?=.*[a-zA-Z])[a-zA-Z\d]{2,}$/