2012-06-05 16 views

回答

3

,最簡單的解決方案是使用一個負先行:

^(?!(?:[^/]*/){4}) 

這基本上意味着字符串不能包含4條斜線。

此處假設您允許斜線之間的其他字符,但最多3個斜線。

積極版本將是^(?=[^/]*(?:/[^/]*){0,3}$)^[^/]*(?:/[^/]*){0,3}$,沒有向前看。 當然,如果可能的話,如果沒有正則表達式,這個問題是微不足道的。

讓我們試着打破這一最後一跌:

  • ^ - 開始的字符串。
  • [^/]* - 某些字符不是斜線(或無)
  • (?:) - 邏輯組。類似於(),但不會捕獲結果(我們在驗證後不需要它)
  • /[^/]* - 斜槓,後跟非斜槓字符。
  • {0,3} - 從0到3次。
  • $ - 字符串結束。
+0

感謝 - 我相信你能最後的模式適應你的範圍': )' – seesee

+0

@seesee工作:( – Kobi

+0

^(?= [^ /] *(?:/ [^ /] *){0,3} $) - >這不起作用,但^ [^ /] *(?:/ [^ /] *){0,3} $ - >小心解釋一下?什麼是*和?:,看起來很複雜 – seesee

1

你可以嘗試以下的(你不得不說,不應該有/後):

^(?=/{1,3}([^/]|$)) 
+0

不回答我的是一個範圍爲1〜3 – seesee

+0

http://fiddle.re/bt18 – seesee

相關問題