2017-06-27 101 views
-3

我在創建正則表達式時遇到問題。它需要fullfill以下:特定的密碼正則表達式

1)具有8-12個字符

2)至少1個大寫字母

3)至少3個小寫字母

4)至少1數

5)至少1個特殊字符

6)具有開始與小寫,大寫在前或數字

7)最多2個重複字符

在此先感謝!

+3

'*'將在技術上工作。除非你這樣做,否則我不會顯示更多的努力。 –

+0

正則表達式不匹配匹配「必須至少包含_N_ of ...」爲什麼你不能只寫一個子程序來掃描一次字符串,並計算出看到的字符數是多少以適應每個所需的類別? –

+0

'最多2個重複字符' - 這是什麼意思? – sln

回答

0

這應該工作

^(?=.*[A-Z])(?=(?:.*[a-z]){3})(?=.*[0-9])(?=.*[!"#$%&'()*+,\-./:;<=>[email protected][\]^_`{|}~])(?=(?:(.)(?!\1\1))+$)[a-zA-Z0-9].{7,11}$ 

解釋/擴展

^       # BOS 
(?= .* [A-Z])    # 1 upper 
(?= 
     (?: .* [a-z]){3}    # 3 lower 
) 
(?= .* [0-9])    # 1 number 
(?= 
     .* [!"#$%&'()*+,\-./:;<=>[email protected][\]^_`{|}~] # 1 special 
) 
(?=       # Maximum 2 repeating 
     (?: 
      (.)       # (1) 
      (?! \1 \1) 
    )+ 
     $ 
) 
[a-zA-Z0-9]     # First alnum 
.{7,11}      # 8 to 12 max chars 
$        # EOS 
+1

經過測試,工作!非常感謝! –

0

你到目前爲止得到了什麼? 另外,你使用哪一組正則表達式?

我用表達

  1. 限制它的長度開始是8-12,像[A-ZA-Z] {8,12}

  2. 對於在第一個要求,你可以使用[] +

對於其他要求,這是一個有點tricker

+0

現在:最少8個和最多12個字符,至少一個大寫字母,一個小寫字母,一個數字和一個特殊字符: 「^(?=。* [az])(?= * [AZ])(?=。* \ d)(?=。* [$ @ $!%*?&])[A-ZA-Z \ d $ @ $!%*?&] {8, 12}「 –