密码长度8——16个字符,且区分大小写;
不能使用空格、中文
密码需要使用大写字母、小写字母、数字及特殊符号中至少三种的组合
change = (e) => {
const Epwd = e.target.value;
const chinese = /[\u4E00-\u9FA5\uF900-\uFA2D\u0020]/;
// 包含大小写字母、数字、特殊字符至少3个组合大于8个字符
const testPassword = /^(?![A-Za-z]+$)(?![A-Z\d]+$)(?![A-Z\W]+$)(?![a-z\d]+$)(?![a-z\W]+$)(?![\d\W]+$)\S{8,16}$/;
if (testPassword.test(Epwd) === false || chinese.test(Epwd) === true) {
this.setState({
Judge: false,// 为false时密码格式不正确
})
} else {
this.setState({
Judge: true,// 为true时密码格式正确
})
}
// 密码强度
const QD = this.panduan(Epwd);
this.setState({
list: QD
})
}
panduan = (Epwd) => { // 密码强度测试
let modes = 0;
if (Epwd.length < 8) return 0;
if (/\d/.test(Epwd)) modes++; // 数字
if (/[a-z]/.test(Epwd)) modes++; // 小写
if (/[A-Z]/.test(Epwd)) modes++; // 大写
if (/\W/.test(Epwd)) modes++; // 特殊字符
if (Epwd.length > 12) modes++;
return modes;
}