3

我正在使用下面的正则表达式来验证密码以仅接受字母数字字符。如果我输入 2 个字符,一个字母和一个数字,则正则表达式有效,但如果超过两个字符,我的正则表达式不起作用。如果可能的话,我想要以下结果,如“预期行为”中所示。谁能帮我重写我的正则表达式?

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
4

6 回答 6

15

您想添加“一个或多个”,您当前正在检查一个字母后跟一个数字。

尝试:

/^[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;
}
于 2013-05-29T12:35:10.067 回答
3
function checkPasswordComplexity(pwd) {
        var regularExpression = /^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$/;
        var valid = regularExpression.test(pwd);
        return valid;
    }
于 2013-05-29T12:45:42.960 回答
2

你可以使用这个:

/^(?=.*\d)(?=.*[a-z])[a-z\d]{2,}$/i
于 2013-05-29T12:41:15.250 回答
1

尝试这样做:

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

这意味着“一个或多个字母或数字”。

但是,某些用户可能还想&*#在密码中输入符号(如 )。如果您只想确保至少有一个字母和数字同时仍然允许使用符号,请尝试以下操作:

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

(?=.*[a-zA-Z])是一个积极的展望。这意味着它确保前面有一个字母,但它不影响正则表达式。

于 2013-05-29T12:35:40.720 回答
1
{
var pwd=document.getElementById('pwd').value;
var reg = /^[a-zA-Z0-9]{8,}$/;  
var re=reg.test(pwd);
alert(re);

}

于 2015-02-12T05:34:17.370 回答
0

我认为 javascript 不支持环视,因此您可以使用:

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

但如果它们受到支持:

/^(?=.*\d)(?=.*[a-zA-Z])[a-zA-Z\d]{2,}$/
于 2013-05-29T12:41:23.397 回答