2015-09-11 54 views
0

的正則表達式的密碼定期密碼

  • 表達它應該有一個數字
  • 一個字符強制
  • 不區分大小寫。
  • 特殊字符不是強制性的。

xyz.match(/^(?:[0-9]+[a-z]|[a-z]+[0-9])[a-z0-9]*$/i)

在此,如果我們給予特殊字符它不接受

asd12 //working 
Asd123 //working 
[email protected] //not working 

回答

1

需要2查找aheads的開始,而不是一個非捕獲組錨:

/^(?=[^0-9]*[0-9])(?=[^a-z]*[a-z]).*$/i 
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 

.*子模式將允許任何字符,但預見將需求至少1位數字和1個拉丁字母。

請注意,非捕獲組仍然會消耗字符,並且不能用於檢查是否存在字符串中的特定子模式。只有zero-width assertions提供該機制。

看到這個regex demo

+0

其工作謝謝:) –

+0

FYI:如果你想匹配'xyz1'和'123xyz',但不能匹配'123xyz @',使用'/ ^(= [^ 0? -9] * [0-9])(?= [^ az] * [az])[a-z0-9] * $/i'(與您的[a-z0-9] *'相同原始正則表達式)。 –

+0

你能否更新編程語言標籤?它是JavaScript嗎? –