簡體   English   中英

允許再輸入一個特殊字符

[英]Allowing more then one special chars in password

我有測試以下規則的正則表達式,

  1. 密碼必須至少包含一個字符。
  2. 密碼必須至少包含一個數字。
  3. 密碼必須至少包含一個字母數字字符(應允許再輸入一個)

我的嘗試是這樣,

/^([a-zA-Z+]+[0-9+]+[!@#$%^&*])$/

在大多數情況下,此方法都可以正常工作,除非我添加一個以上的字母數字字符。

測驗

  • 測試[qwer1234]結果[ 無效 ]結論[ 通過 ]
  • 測試[qwer1234 $]結果[ 有效 ]結論[ 通過 ]
  • 測試[qwer1234#$]結果[ 無效 ]結論[ 失敗 ]

最后一個測試應該通過,但失敗。 我知道哪里出了問題,但無法擺脫正則表達式的魔咒。 我對什么是錯的想法是

[0-9+] // This + sign shows that you can have more then 1 of that range of numerics

哪里,

[!@#$%^&*] // Does not have the + sign

我試過了,

[!@#$%^&*+] // Does not have the + sign
[!@#$%^&*]+ // Does not have the + sign

兩者都不起作用。 我想念什么?

為什么需要將它們全部融合到一個正則表達式中?

function test_password(password) {
    if (password.length < 2) return false;            // Minimum length
    if (!/[0-9]/g.test(password)) return false;       // Needs a number
    if (!/[a-z]/gi.test(password)) return false;      // Needs a letter
    if (!/[^a-z0-9]/gi.test(password)) return false;  // Needs a special char

    return true;
}

根據您的實際需求,根據您對情況的混亂描述,這里有兩個正則表達式,希望對您有所幫助。 第一個密碼要求密碼至少以1個字母字符開頭,其次為至少1個數字字符,然后至少為1個特殊字符。

/^([a-zA-Z]+[0-9]+[!@#$%^&*]+)$/

http://jsfiddle.net/ECwP8/

如果您不需要字符按特定順序排列,則可以嘗試以下正則表達式:

/(?=[^a-zA-Z]*[a-zA-Z])(?=[^0-9]*[0-9])(?=[^!@#$%^&*]*[!@#$%^&*])/

http://jsfiddle.net/bJTTk/1/

該密碼僅要求密碼中以任何順序出現至少1個字母字符,至少1個數字字符和至少1個特殊字符。

嘗試以下方法。 如果將字符放在首位,將數字放在第二位,然后將字母數字放在第二位,它將起作用。

/ ^ [a-zA-Z] + [1-9] + [!@#$%^&*] + $ /

暫無
暫無

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

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