2012-08-28 53 views
2

我需要一個驗證密碼格式的正則表達式模式。 規則是:用於密碼的正則表達式

  • 最小總共8個
  • 至少兩個字母字符
  • 至少兩個數字或符號

我想出了以下內容: /((?=.*[0-9\@\&#\$\?\%!\|(){}[]])(?=.*[a-zA-Z]).{8,})/

它會看看,如果兩者都發生一次,但我需要它toch驗證,如果他們至少發生兩次。 如果我添加了{2,}這樣的: /((?=.*[0-9\@\&#\$\?\%!\|(){}[]]{2,})(?=.*[a-zA-Z]{2,}).{8,})/

再比如說下面不工作:a1a1a1a1a1

任何人可以幫助我嗎?

回答

3

這是你如何做到這一點,利用積極的向前看符號:http://regex101.com/r/uW0yI4

/^(?=.*[a-z].*[a-z])(?=.*[!"#...\d].*[!"#...\d]).{8,}$/gmi

只是所有要匹配的符號替換!"#...

注意:您的應用程序可能不需要多行標誌。

+0

這工作,只有一個小的話,它會接受不允許的字符像〜了。我怎麼能阻止呢? – user1629636

+0

將'.'點改爲包含你想要允許的字符類。例如:'/^(?=.*[az].*[az])(?=.*[!"#...\dd].*[!"#...\d])[az \ d] {8,} $/gmi' –

0

這應該給你你以後:

^((?=(.*[\d0-9\@\&#\$\?\%!\|(){}[\]]){2,})(?=(.*[a-zA-Z]){2,}).{8,})$