1

先読みアサーションを使用して、「/」の数を範囲で制限するにはどうすればよいですか。

私は次のことに疲れました

^(?= / {1,3})$

しかし、それは機能しません

4

2 に答える 2

3

最も簡単な解決策は、ネガティブ先読みを使用することです。

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

これは基本的に、文字列に4つのスラッシュを含めることができないことを意味します。

これは、スラッシュの間に他の文字を許可することを前提としていますが、最大3つのスラッシュを許可します。

ポジティブバージョンは、先読みなしで^(?=[^/]*(?:/[^/]*){0,3}$)またはになります。^[^/]*(?:/[^/]*){0,3}$もちろん、可能であれば、正規表現がなければ問題は簡単です。

最後の1つを分解してみましょう:

  • ^-文字列の先頭。
  • [^/]*-スラッシュではない(またはなし)一部の文字
  • (?: )-論理グループ。に似て()いますが、結果をキャプチャしません(検証後には必要ありません)
  • /[^/]*-スラッシュの後にスラッシュ以外の文字が続きます。
  • {0,3}-0から3回。
  • $-文字列の終わり。
于 2012-06-05T09:07:01.400 に答える
1

あなたは次のことを試すことができます(あなたは/その後はないはずだと言わなければなりません):

^(?=/{1,3}([^/]|$))
于 2012-06-05T08:29:22.113 に答える