/**
* 校验密码强度
* 强度规则:
* 1) 任何少于6个字符的组合,弱;任何字符数的同类字符组合,弱;
* 2) 不少于6位的两类字符组合,中;
* 3) 12位字符数以下的三类或四类字符组合,强;
* 4) 12位字符数以上的三类或四类字符组合,非常好。
* @param value
* @returns {number} 强度等级
*/
export const checkPasswordStrong = (value) => {
let modes = 0
if (value.length < 6) return modes
// 数字
if (/\d/.test(value)) modes++
// 小写
if (/[a-z]/.test(value)) modes++
// 大写
if (/[A-Z]/.test(value)) modes++
// 特殊字符
if (/\W/.test(value)) modes++
switch (modes) {
case 1:
return 1
case 2:
return 2
case 3:
case 4:
return value.length < 12 ? 3 : 4
}
}