先読みアサーションを使用して、「/」の数を範囲で制限するにはどうすればよいですか。
私は次のことに疲れました
^(?= / {1,3})$
しかし、それは機能しません
最も簡単な解決策は、ネガティブ先読みを使用することです。
^(?!(?:[^/]*/){4})
これは基本的に、文字列に4つのスラッシュを含めることができないことを意味します。
これは、スラッシュの間に他の文字を許可することを前提としていますが、最大3つのスラッシュを許可します。
ポジティブバージョンは、先読みなしで^(?=[^/]*(?:/[^/]*){0,3}$)
またはになります。^[^/]*(?:/[^/]*){0,3}$
もちろん、可能であれば、正規表現がなければ問題は簡単です。
最後の1つを分解してみましょう:
^
-文字列の先頭。[^/]*
-スラッシュではない(またはなし)一部の文字(?: )
-論理グループ。に似て()
いますが、結果をキャプチャしません(検証後には必要ありません)/[^/]*
-スラッシュの後にスラッシュ以外の文字が続きます。{0,3}
-0から3回。$
-文字列の終わり。あなたは次のことを試すことができます(あなたは/その後はないはずだと言わなければなりません):
^(?=/{1,3}([^/]|$))