簡體   English   中英

JavaScript 密碼驗證正則表達式按分組順序失敗

[英]JavaScript password validation regex failing on order of groupings

我的密碼驗證標准如下:

  • 必須至少包含兩個小寫字符
  • 必須至少包含兩個大寫字符
  • 必須至少包含兩個數字字符
  • 必須至少包含兩個特殊字符,即@#$%
  • 長度必須至少為 11 個字符

我嘗試將其用於前四個標准:

/(?:\d{2,})(?:[a-z]{2,})(?:[A-Z]{2,})(?:[!"'#$&()*+-@,.:;<>=?^_`{|}~\/\\]{2,})/g

但它與我期望的以下字符串不匹配:

12QAqa@#

但它確實匹配:

12qaQA@#

驗證標准的順序並不重要。 我如何重寫正則表達式以不考慮順序?

以下似乎滿足您的所有要求:

/*
Must contain at least two lower case characters
Must contain at least two upper case characters
Must contain at least two numeric characters
Must contain at least two special characters i.e. @#$%
Must be at least 11 characters long
*/

var password ='12qaQ@#123456789A';
var pattern  =/^(?=(.*[a-z]){2,})(?=(.*[A-Z]){2,})(?=(.*[0-9]){2,})(?=(.*[!@#\$%]){2,}).{11,}$/;

alert( pattern.test(password) ); 

https://jsfiddle.net/rryg67v1/1/

^                     // start of line
(?=(.*[a-z]){2,})     // look ahead and make sure at least two lower case characters exist
(?=(.*[A-Z]){2,})     // look ahead and make sure at least two upper case characters exist
(?=(.*[0-9]){2,})     // look ahead and make sure at least two numbers exist
(?=(.*[!@#\$%]){2,})  // look ahead and make sure at least two special characters exist
.{11,}                // match at least 11 characters
$                     // end of line            

祝你好運!!

暫無
暫無

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

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