jQuery密码强度正则表达式,具有潜在的逐项反馈消息

时间:2012-06-18 15:53:07

标签: jquery regex passwords

我希望获得以下密码强度要求的正则表达式:

  • 最少8个字符
  • 至少一个大写字符
  • 至少一个数字(0-9)
  • 至少一个特殊字符(!,@,#,$,%,^,&,*,?,_,〜, - ,(,))

我需要使用jquery.validate.password.js插件来评估它。

此外,是否可以根据他们缺少的标准提供用户反馈?例如,如果用户缺少大写字符,我可以吐回一条告诉他们的消息吗?它们提供了一个示例,展示了如何传递不同的验证消息:

var originalPasswordRating = $.validator.passwordRating;
$.validator.passwordRating = function(password, username) {
    if (password.length < 100) {
        return { rate: 0, messageKey: "too-short" };
    }
};

$.validator.passwordRating.messages = $.extend(originalPasswordRating.messages, {
    "too-short": "Your password must be longer than 100 chars"
});

2 个答案:

答案 0 :(得分:3)

听起来您想要运行一系列正则表达式并单独存储结果。个别地,他们是微不足道的。在JavaScript中:

var password = "P@ssw0rd";
var validLength = /.{8}/.test(password);
var hasCaps = /[A-Z]/.test(password);
var hasNums = /\d/.test(password);
var hasSpecials = /[~!,@#%&_\$\^\*\?\-]/.test(password);

var isValid = validLength && hasCaps && hasNums && hasSpecials;

http://jsfiddle.net/RichardTowers/cAuTf/

请注意,即使使用规则,人们也可以选择非常弱的密码。

答案 1 :(得分:1)

我从未使用过这个插件,但我相信这样的事情对你有用:

var originalPasswordRating = $.validator.passwordRating;
var upperCaseRegex = /[A-Z]+/;
var numberRegex = /[0-9]+/
var specialCharRegex = /[\!\@\#\$\%\^\&\*\?\_\~\-\(\)]+/;
$.validator.passwordRating = function(password, username) {
    if (password.length < 8) {
        return { rate: 0, messageKey: "too-short" };
    } else if(!password.match(upperCaseRegex)) {
        return { rate: 0, messageKey: "no-upper" };
    } else if(!password.match(numberRegex)) {
        return { rate: 0, messageKey: "no-number" };
    } else if(!password.match(specialCharRegex)) {
        return { rate: 0, messageKey: "no-special" };
    }

};
免责声明:我没有测试任何此类代码,但我相信这应该指向正确的方向。

您需要使用我在我的示例中创建的“messageKeys”创建相应的消息...