2016-07-08 33 views
1

我已經創建下面的以下參數的正則表達式:正則表達式,以允許一個特殊字符與至少5位數字和最大6位

  • 最小長度:5
  • 最大長度:6
  • 需求具有至少5個數字
  • 空格和特殊字符允許的:#&()_ + []:;」,/ \ - 「*
  • 無字母允許

我創建的正則表達式是:

^\d{3}[_\+\[\]\:\;\'\,\/.\-"[email protected]#$%^&*()\s]{0,1}\d{2,3}$ 

這是滿足長度要求和5位數的需求,但它是不允許的特殊字符。我被阻止,因此無法找到任何解決方案,請幫助。

+0

在你的正則表達式中,字符串第四個位置的特殊字符,你想在任何地方使用嗎? – Kerwin

+0

它應該總是以3位數開頭,就像你的正則表達式所要求的一樣嗎? – ClasG

+0

沒有這樣的要求,因爲特殊字符應該在第4位。我是一個新手到正則表達式,所以我嘗試了我認爲是最好的解決方案。請指導 –

回答

3

如果您正則表達式味支持查找aheads您可以用

^(?:(?=.{6}$)\d*[-#&()_+[\]:;',\/.\\"*]\d*|\d{5,6})$ 

做到這一點。

它使用兩個變化。首先檢查長度,其中包括一個特殊字符總是必須是6(允許5位數字),並有積極的預見。然後它匹配任意數量的數字,然後是特殊字符,最後是任意數字的數字。

另一種選擇只是檢查5-6位數字。

See it here at regex101

+0

Hi @ClasG, 如果我們必須允許字母而不是特殊字符,該怎麼辦?在這個正則表達式中會有解決方法嗎? 一個很好的幫助,將不勝感激,因爲我真的被卡住 –

+0

如果應用相同的規則,只允許一個字母而不是特殊的'^(?:(?=。{6} $)\ d * [A- ZA-Z] \ d * | \ d {5,6})$'。或者依賴於語言和正則表達式(**總是**應該在正則表達式問題中陳述); ^(?:(?=。{6} $)\ d * \ p {L} \ d * | \ d {5,6})$' – ClasG

相關問題