2 回答
TA贡献1829条经验 获得超4个赞
不要为此使用单个正则表达式,这太复杂了,因为您必须写出 4 个选项的每个可能的 3 组合,并在每个组合之间交替使用|. 将每个测试拆分为一个正则表达式,然后以编程方式检查有多少测试通过:
const test = (str) => {
const hasUpper = /[A-Z]/.test(str);
const hasLower = /[a-z]/.test(str);
const hasNumbers = /\d/.test(str);
const hasSpecial = /[._~!@#$^&*]/.test(str);
if (hasUpper + hasLower + hasNumbers + hasSpecial < 3) {
return false;
}
if (str.toLowerCase().includes('administrator')) {
return false;
}
return str.length >= 8 && str.length <= 30;
};
如果您还想确保字符串中不存在除描述之外的字符,那么:
const hasOther = /[^a-z\d._~!@#$^&*]/i.test(str);
if (hasOther) {
return false;
}
TA贡献1775条经验 获得超11个赞
let reg =/^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\W_!@#$%^&*`~()-+=]+$)(?![a-z0-9]+$)(?![a-z\W_!@#$%^&*`~()-+=]+$)(?![0-9\W_!@#$%^&*`~()-+=]+$)[a-zA-Z0-9\W_!@#$%^&*`~()-+=]{8,30}$/;
if(!reg.test(str) || str.toLowerCase().includes('administrator')){
return false;
}
添加回答
举报