首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

JavaScript 強密碼驗證正則:長度、字符類型、連續/重複字符、用戶名排除完整實現

     編輯:程式設計綜合問答

密碼策略要求

  1. 8-16 位字符。
  2. 至少一個大寫、一個小寫、一個數字。
  3. 不含 3 位以上相同字符連續(如 aaa、1111)。
  4. 不含 3 位以上連續遞增/遞減字符(如 123、abc)。
  5. 不包含用戶名。

完整驗證函數

function validatePassword(psd, user) {
    if (psd.length < 8 || psd.length > 16) {
        alert("長度必須 8-16 位"); return false;
    }
    if (psd.includes(user)) {
        alert("不能包含用戶名"); return false;
    }
    if (!/[a-z]/.test(psd)) { alert("需含小寫字母"); return false; }
    if (!/[A-Z]/.test(psd)) { alert("需含大寫字母"); return false; }
    if (!/[0-9]/.test(psd)) { alert("需含數字"); return false; }

    // 連續數字/字母檢查(簡化版,可擴展完整序列)
    if (/012|123|234|345|456|567|678|789|abc|bcd|cde|def|efg|fgh|ghi|hij|ijk|jkl|klm|lmn|mno|nop|opq|pqr|qrs|rst|stu|tuv|uvw|vwx|wxy|xyz/i.test(psd)) {
        alert("不能包含 3 位連續字符"); return false;
    }

    // 重複字符檢查
    for (let i = 0; i < psd.length - 2; i++) {
        if (psd[i] === psd[i+1] && psd[i] === psd[i+2]) {
            alert("不能包含 3 位相同字符"); return false;
        }
    }
    return true;
}

優化建議

  • 連續字符正則可預編譯完整序列庫,或使用字符碼差值判斷通用邏輯。
  • 生產環境建議後端同步驗證,前端僅作即時提示。
  • 可集成 zxcvbn 庫評估熵值,提供更科學的強度分級。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved