2012-01-26 24 views
0

私たちは指定したURLにサードパーティのスクリプトを読み込むために正規表現を使用する独自のトラッキングシステムを使用しています。URL付き正規表現 - 構文

正規表現が正しいかどうかを確認するために使用している正規表現の構文をチェックしたかったのです。以下のURL

/products/18/indoor-posters 

に一致するように

私たちは、このルールを使用している:

.*\/products\/18\/indoor-posters.* 

が、これは右見ていますか?また、URLにクエリパラメータがある場合でも、それは動作しますか?例えば

/products/18/indoor-posters?someParam=someValue 

一致するように、別のURLがあります:

/products 

このためのルールは以下のとおりです。

.*\/products 

でしょう。この試合正しく?

答えて

0

まあ、 "右"は相対的な用語です。通常、.*は何にもマッチするので、良い考えではありません。したがって、これらの正規表現はすべてあなたのサンプル文字列と一致しますが、それらはさらに多く一致します。問題は、には何の正規表現を使用していますか?

これらの部分文字列が文字列のどこにも存在するかどうかだけを確認したい場合は、それらは問題ありません(しかし、とにかく部分文字列をチェックするだけで正規表現は必要ありません)。

有効なURLかどうかどうかを確認したい場合は、foo-bar!$%(§$§$/products/18/indoor-postersssssss)(/$%/§($/と一致するため、正規表現は正しくありません。

あなたは常にあなたの入力として正しいURLを取得し、ちょうど彼らがあなたのパターンに一致するかどうかを確認したいと思うし、私は終わるすべてのURLと一致するように

^.*\/products$ 

をお勧めしたいことを確認することができた場合/products、及び

^.*\/products\/18\/indoor-posters(?:\?[\w-]+=[\w-]+)?$ 

に英数字のみがnamevalueの法的であると仮定すると、端部に任意?name=valueビットと/products/18/indoor-postersで終わるURLにマッチします。

+0

正規表現は、指定されたURLの訪問者と一致するように意図されています。たとえば、訪問者がwww.mysite.com/productsのページにアクセスし、URLにクエリパラメータが含まれている可能性があります。/productsにマッチするリクエストURIを一致させ、必要に応じて?a = bと表示されるクエリパラメータと一致させたいだけです。 – thirtyish

+0

@thirtyish:OK、私は自分の答えを編集しました。 –

+0

ありがとう - 私たちはかなりそこにいると思います。また、パラメータ値はハイフンとアンダースコアをサポートする必要があります。私たちはどうしたらいいでしょうか? – thirtyish