11

Url のパスを一致させたいのですが、クエリ文字列は無視します。正規表現には、クエリ文字列の前にオプションの末尾のスラッシュを含める必要があります。

有効な一致を示す URL の例:

/path/?a=123&b=123

/path?a=123&b=123

したがって、文字列「/path」は上記の URL のいずれかと一致する必要があります。

次の正規表現を試しました:(/path[^?]+).*

ただし、これは上記の最初の例のような URL にのみ一致します。/path/?a=123&b=123

末尾のスラッシュなしで2番目の例と一致させるにはどうすればよいでしょうか?

正規表現は必須です。

4

2 に答える 2

7

正規表現は必要ありません:

url.split("?")[0];

本当に必要な場合は、これを試してください:

\/path\?*.*

EDIT実際、最も正確な正規表現は次のとおりです。

^(\/path)(\/?\?{0}|\/?\?{1}.*)$

/pathor /path/or /path?somethingorのいずれかに一致させたいため/path/?somethingです。?は「最大 1 つ」を\?意味し、疑問符を意味することに注意してください。

ところで: クエリ文字列を処理しないルーティング ライブラリの種類は?? 他のものを使用することをお勧めします。

于 2013-10-27T21:28:15.340 に答える