我正在使用下面的正则表达式验证密码只接受字母数字字符.如果我输入2个字符一个alpha和一个数字但是如果超过两个字符我的正则表达式不起作用,则正则表达式有效.如果可能,我希望以下结果如"预期行为"中所示.任何人都可以帮我改写我的正则表达式吗?
JavaScript的
function checkPasswordComplexity(pwd) {
var regularExpression = /^[a-zA-Z][0-9]$/;
var valid = regularExpression.test(pwd);
return valid;
}
Run Code Online (Sandbox Code Playgroud)
当前行为
Password:Valid
a1:true
aa1:false
aa11:false
Run Code Online (Sandbox Code Playgroud)
预期的行为
Password:Valid
aa:false (should have at least 1 number)
1111111:false (should have at least 1 letter)
aa1:true
aa11:true
a1a1a1a1111:true
Run Code Online (Sandbox Code Playgroud)
Ben*_*aum 12
你想添加"一个或多个",你正在检查一个字母后跟一个数字.
尝试:
/^[a-zA-Z0-9]+$/
Run Code Online (Sandbox Code Playgroud)
+ 意思是'一个或多个'
我也加入了范围.
注意:我不明白为什么你想要将密码限制在如此小的范围内,但是具有宽字符范围会使你的密码变得更强.
如果您只想验证密码至少有一个字母和至少一个数字,您可以这样检查:
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;
}
Run Code Online (Sandbox Code Playgroud)
小智 5
function checkPasswordComplexity(pwd) {
var regularExpression = /^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$/;
var valid = regularExpression.test(pwd);
return valid;
}
Run Code Online (Sandbox Code Playgroud)