前端密码强度校验怎么写才靠谱?
我在做登录注册页的密码策略,想让用户设置强密码,但不确定校验逻辑怎么写才安全又不烦人。试了下正则,但总觉得漏了什么。
比如下面这段代码,只检查了长度和是否包含数字,但好像没考虑大小写字母和特殊字符?而且用户反馈说提示太模糊,不知道具体哪里不符合要求。
function validatePassword(pwd) {
if (pwd.length < 8) return false;
if (!/d/.test(pwd)) return false;
return true;
}
有没有更全面又用户体验好的写法?要不要分等级提示(比如弱/中/强)?
调用一下看看效果:
几个关键点:
长度必须8位以上这个是底线,没得商量。字符类型检查就4种:小写、大写、数字、特殊字符,你漏了大小写和特殊字符。分数制比单纯的true/false灵活,4项全有就是强,少一项扣一分。提示信息直接告诉用户缺什么,比"密码不符合要求"这种废话有用多了。
如果想更严格可以把长度改成12位,特殊字符列表也可以根据业务调整。复制这个改改就能用。