私たちのWebアプリケーションでは、ユーザーが独自の「スラッグ」を指定できます。これには、相対パス(/somedir/some-file.htmなど)を含めることができます。
ルーティング構成では、有効なスラッグ(セグメントを含む)のみがサポートされていることを確認する必要があります。
私が使用している正規表現は次のとおりです。
(^[a-z0-9])([a-z0-9-/]+)([a-z0-9])$
これの意味は:
- 有効なスラッグは、たとえばsome-file.htmと一致します。
- セグメント(相対パス)を持つ有効なスラッグは、たとえばsomedir / subdir/some-file.htmと一致します。
- 絶対URLは一致しません(例:/somedir/some-file.htm)
- 末尾の/または-は一致しません(例:-slug-)
残念ながら、これは、式が1つ以上のスラッシュを許可しているため、たとえばsomedir // subdir//some-file.htmなどの二重スラッシュが一致することも意味します。
セグメント間にゼロ以上のスラッシュを許可するように変更するにはどうすればよいですか。
私はそれを考えました:
(^[a-z0-9])(/?[a-z0-9-]+/?)([a-z0-9])$
動作しますが、動作しません。