簡體   English   中英

正則表達式的密碼強度不起作用

[英]Regex for password strength not working

創建新用戶帳戶時,我需要顯示密碼強度,因此我有以下條件

  • 少於8個字符->太短
  • 8至15個字符,僅字母(大寫和小寫)或僅數字->弱
  • 8至15個字符的字母(上下)和至少一個數字->中度
  • 8至15個字符的字母(上下),至少一個數字和至少一個特殊字符->強

我正在我的JavaScript中嘗試以下正則表達式

/^.{1,7}$/, //Too Short
/^([a-zA-Z]{8,15})$/, //Weak
/^(?=.*\d)(?=.*[a-zA-Z]).{8,15}$/, //Moderate
/^([a-zA-Z0-9@\!_#\$\^%&*()+=\-[]\\\';,\.\/\{\}\|\":<>\? ]{8,15})$/] //Strong

但是他們沒有工作。 請幫助我以上正則表達式。

如果您為每個“規則”創建一個正則表達式,可能會更容易推理並向用戶提供反饋。

var rules = [
    [/[a-z]/,     'must include lower case letter'],
    [/[A-Z]/,     'must include upper case letter'],
    [/\d/,        'must include number'],
    [/[^\w\d]/,   'must include punctuation character'],
    [/^.{8,15}$/, 'must be 8 to 15 digits'],
    [/(.)\1+/,    'characters cannot be repeated'] ];

您的模式有一些問題。 您似乎正在嘗試測試一周的密碼,然后再測試一個強密碼。 但是,您的模式正在使用字符類。 因此,這意味着提供的任何字符都可以使用。 理論上,“強”密碼可以是“ aaaaaaaa”,因為該密碼的長度至少為8個字符,並且適合您的字符類的az部分。 您也有語法錯誤。 您的序列在]{8,15})$/]結尾處看起來像是您的意思是]{8,15})$/ 另一個語法錯誤是您在字符類中未轉義[] 他們必須是\\[\\]

最后,我建議您閱讀“ 角色逃脫 ”。 它將大大簡化您的模式。 例如,你可以換出azAZ0-9_\\w你的角色等級(字字符)。

您將需要通過一系列檢查來運行它:

^.{1,7}$太短

^[a-zA-Z]{8,15}$^\\d{8,15}$

^[a-zA-Z\\d]{8,15}$溫和

^[a-zA-Z\\d\\W]{8,15}$

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM