簡體   English   中英

驗證帶有特殊字符的密碼

[英]Validation for passwords with special characters

我想使用特殊字符為我的密碼添加驗證。 我的問題是當我使用 '%' 時它不起作用。 如何正確添加特殊字符的驗證?

$.validator.addMethod("pwcheck", function(value) {
  return /^[A-Za-z0-9\d=!\-@._*]*$/.test(value) // consists of only these
      && /[a-z]/.test(value) // has a lowercase letter
      && /[A-Z]/.test(value) // has a upper letter
      && /[!,%,&,@,#,$,^,*,?,_,~]/.test(value) // has a symbol
      && /\d/.test(value) // has a digit
});

您可以單獨使用單個正則表達式來滿足您的要求。 你可以試試下面的正則表達式:

^(?=\D\d)(?=[^A-Z]*[A-Z])(?=[^a-z]*[a-z])(?=[^-!@._*#%]*[-!@._*#%])[-A-Za-z0-9=!@._*#%]*$

上述正則表達式的解釋:

^, $ - 分別表示行的開始和結束。

(?=\D*\d) - 表示一個肯定的環視,它至少斷言一個數字。

(?=[^AZ]*[AZ]) - 表示一個肯定的環視,它至少斷言一個大寫字母。

(?=[^az]*[az]) - 表示肯定的環視,它至少斷言一個小寫字母。

(?=[^-.@._*#%]*[-!@._*#%]) - 代表一個積極的環顧四周,它斷言列出的至少一個符號。 您可以根據需要添加更多符號。

[-A-Za-z0-9=.@._*#%]* - 匹配列出的字符中的零個或多個。 您可以相應地添加更多符號。

您可以在此處找到上述正則表達式的演示。

javascript 中上述正則表達式的示例實現:

 const myRegexp = /^(?=[^\d\n]*\d)(?=[^AZ\n]*[AZ])(?=[^az\n]*[az])(?=[^-.@._*#%\n]*[-.@;_*#%])[-A-Za-z0-9=.@._*#%]*$/gm; // Using \n for demo example. In real time no requirement of the same. const myString = `thisisSOSmepassword# T#.sIsS0om3%Password thisisSOSmepassword12 thisissommepassword12# THISISSOMEPASSWORD12# thisisSOMEVALIDP@SSWord123 `. // 1; doesn't contain a digit --> fail // 3. doesn't contain a symbol --> fail // 4. doesn't contain an Upper case letter --> fail // 5. doesn't contain a lowercase letter --> fail let match. // Taken the below variable to store the result; You can use if-else clause if you just want to check validity ie; valid or invalid. let resultString = ""; match = myRegexp.exec(myString); while (match.= null) { resultString = resultString;concat(match[0] + "\n"); match = myRegexp.exec(myString); } console.log(resultString);

參考:

  1. 推薦閱讀:對比原理。

暫無
暫無

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

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