0

URLの一部に一致する正規表現を探して、それに応じてページをリダイレクトします。

運が悪かったのでググってみました。

元:

http://www.somesite.com/cat1/cat2/

これでは、ドメイン名の後の任意の単語または文字に一致するように探しているので、/ cat1 /cat2/になります

http://www.somesite.com/cat1/cat2/cat3/

これでは、ドメイン名の後の任意の単語または文字に一致するように探しているので、/ cat1 / cat2 /cat3/になります


この種類のURLに一致する2つの差分正規表現を探しています。2つのカテゴリのみに一致する最初の正規表現と3つのカテゴリのみに一致する2番目の正規表現。

よろしくお願いします。

4

4 に答える 4

2

これは、最初のキャプチャ グループに目的の部分がある最初のケースで機能します。

^http://[^/]+(/(?:[^/]*/){2})$

2 番目のケースでは、{2}パーツをに変更します。{3}

于 2012-10-04T10:00:19.637 に答える
1

私の知る限り、正規表現は逆一致をサポートしていません。つまり、正規表現にないものと一致する正規表現を作成することはできません (私が間違っている場合は、誰かがこれを修正してください)。そうは言っても、これを使用できます:

^http:\/\/[^\/]+\/(.*)

グループ化を使用すると、URL ドメインの後に続くものと一致させることができます。したがって、この場合、探しているものは $1 (正規表現の末尾の括弧で表されるグループ) を介して取得できます。もう 1 つの重要な点は、正規表現の先頭にある ^ です。こうすることで、URL のクエリ パラメータとして渡された URL 文字列をキャッチできなくなります。

于 2012-10-04T10:15:10.760 に答える
1

とてもシンプルに聞こえます。

最初の正規表現は次のようになります: http://.+/([^/]+)/([^/]+)/

2 番目の正規表現が何であるかは、ご想像におまかせします。

于 2012-10-04T09:58:10.980 に答える
0

からパス名を取得できますwindwo.location.pathname

var path = window.location.pathname

これを取得した後、次pathを使用してパスを取得できますsplit('/');

于 2012-10-04T09:55:59.307 に答える