2 回答

TA貢獻1829條經(jīng)驗 獲得超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條經(jīng)驗 獲得超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;
}
添加回答
舉報