四種字符組合:數字、小寫字母、大寫字母、其他字符。
| 等級 | 條件 |
|---|---|
| 0 | 無輸入 |
| 1 | 長度 ≤ 4 或 僅含 1 種組合 |
| 2 | 長度 > 4 且 含 2 種組合 |
| 3 | 長度 > 4 且 含 3 種組合 |
| 4 | 長度 > 4 且 含 4 種組合 |
function checkPwdStrength(pwd) {
if (!pwd) return 0;
// 核心正則:前四個捕獲組分別匹配四類字符,第五組處理短密碼
const regex = /(?:[0-9])|(?:[a-z])|(?:[A-Z])|(?:[^0-9a-zA-Z])|(.{5,})/g;
const matches = pwd.match(regex) || [];
// 匹配到的捕獲組數量即為組合種類數 (短密碼第五組匹配長度≥5)
return Math.min(4, matches.length);
}
(.{5,}) 專門匹配長度 ≥ 5 的任意字符。g 標誌:使 match() 返回所有匹配到的捕獲組內容組成的數組。match 返回 null,直接返回 0。zxcvbn 等熵值估算庫。