我希望获得以下密码强度要求的正则表达式:
我需要使用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"
});
答案 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”创建相应的消息...