function validatePasswordStrength(password) {
if (password.length < 8 || password.length > 20) {
return { valid: false, msg: "密码长度必须为8-20位" };
}
let hasUpper = /[A-Z]/.test(password);
let hasLower = /[a-z]/.test(password);
let hasDigit = /[0-9]/.test(password);
let hasSpecial = /[!@#$%^&*()_+=\-[\]{};':"\\|,.<>/?]/.test(password);
let categoryCount = [hasUpper, hasLower, hasDigit, hasSpecial].filter(Boolean).length;
if (categoryCount < 3) {
return { valid: false, msg: "密码必须包含大写字母、小写字母、数字、特殊符号中的至少三类" };
}
// 检查连续重复字符(如 aaaa)
if (/(.)\1{3,}/.test(password)) {
return { valid: false, msg: "密码中不能出现连续4个及以上相同字符" };
}
return { valid: true, msg: "密码强度合格" };
}
// 测试
console.log(validatePasswordStrength("Abc123!@#"));