2016-10-12 13 views
0

私はURLの書き換えのための正規表現をテストしてきましたが、その2つの仕事に出くわしましたが、どちらが良いか不思議です。両方が悪い場合は、リダイレクション要件を処理する最善の方法です。Regex URL書き換え

私は本質的に共通のルートを持つパスを持つURLをリダイレクトすることを検討しています。

例:

/pages/enteral-feeding-pump 
/pages/enteral-feeding-pump/ 
/pages/enteral-feeding-pump/1234 
/pages/enteral-feeding-pump/1234/ 
/pages/enteral-feeding-pump/1234/1234 
/pages/enteral-feeding-pump/1234/1234/ 

など

これらは私が持っている2のとおりです。

^/pages/enteral-feeding-pump/?(?:[^\/]+\/?)*$

^/pages/enteral-feeding-pump/?(?:.*)

正直、私は両方をテストし、彼らは動作しますが、Iどちらが最善のルートかわからない。

+1

わからないものを、あなたの質問ですが、私は正規表現の問題を呼び出すしたいと思います。両方とも '/ pages/enteral-feeding-pump1234/24'と一致します。それは他のコアと同じコアパスを持っていないので、私はこれがあなたが望むものではないと仮定しています。この正規表現は '^ \/pages \/enteral-feeding-pump(?:$ | \ /(?:。+)?)'を解決するはずです。 [正規表現の例](https://regex101.com/r/kzLWnW/1) – Nathan

+0

私は同じ問題に気づき、それを理解しようとしていました!正規表現をありがとう、すぐにテストが動作することを示しています。あなたが質問への回答としてそれを設定した場合、私はそれを受け入れたものとしてマークします。ありがとう! – darrinb

答えて

0

正規表現には小さな問題があります。これがあなたにとってどれほど大きなものかはわかりませんが、意識する価値はあります。

どちらの正規表現は、次のURLにマッチします:それは同じコア・パスを持っていないので、私はあなたがこの照合したくないだろうと仮定してい

/pages/enteral-feeding-pump1234/24

。以下では、これを防ぐために用意したRegexesに少し修正を加えました。

^\/pages\/enteral-feeding-pump(?:$|\/(?:.+)?)

私はあなたが提供したものから変更さ唯一の事は、私が直接enteral-feeding-pump後の行($)の/または終了を必要としています。

Regex Example