2013-07-24 23 views
0

內的所附的分離ID的URL對於谷歌分析漏斗我想要寫一個正則表達式,將用下面的PTI ID匹配的URL:正則表達式爲谷歌分析:匹配基於值的字符串

1,5 8,13,14,49,79

例如,這些是有效的URL

  • /OrderProcess/OrderConfirmation.aspx?pti=1
  • /OrderProcess/OrderConfirmation.aspx PTI = 1?| 16
  • /OrderProcess/OrderConfirmation.aspx?pti=48|1|47
  • /OrderProcess/OrderConfirmation.aspx?pti=5|7|11

但這些都不是:

  • /OrderProcess/OrderConfirmation.aspx?pti=16
  • /OrderProcess/OrderConfirmation.aspx?pti=2|16|51

此正則表達式匹配以數字開頭的網址,但管道後不匹配的數字:

.*OrderConfirmation.*pti=(1|5|8|13|14|49|79).* 

有近100 IDS,他們可以出現在任何順序變量。可能嗎?

回答

0

你還需要 「字邊界」 正則表達式\b

.*OrderConfirmation.*pti=.*\b(1|5|8|13|14|49|79)\b.* 

使用字邊界意味着ID 1不匹配| 17 |。

查看live demo在各種邊緣情況下的紅寶石。

+0

謝謝,這是很好的,但它不匹配的URL:/OrderProcess/OrderConfirmation.aspx?pti=22|5|7|11其中ID 5不是第一。這需要匹配出現在任何順序中的所有ID。 – user2616169

+0

@ user2616169我已經添加了一個鏈接到一個在線演示,顯示這個正則表達式匹配,並且不正確匹配。正如演示所示,事實上它*不匹配id 5不是第一位的地方。 – Bohemian

0

你需要躲避管道,因爲它們保留符號在正則表達式:

.*OrderConfirmation.*pti=(1|1\|16) 

將匹配/OrderProcess/OrderConfirmation.aspx?pti=1/OrderProcess/OrderConfirmation.aspx?pti=1|16

(添加其餘的應該很容易從這裏開始。)

請注意,如果你這樣寫:。

.*OrderConfirmation.*pti=(1|1\|16).* 

則表達式匹配.*OrderConfirmation.*pti=1或* OrderConfirmation * PTI = 1 | 16` 其次是什麼。如果你想允許其他參數(並不總是有),你需要這樣的:

.*OrderConfirmation.*pti=(1|1\|16)($|&.*) 

這意味着第一個表達式可以跟着字符串的結束或&這反過來又會遵循由任何東西。

+0

感謝mzedeler,我忘了提及有近100個ID,它們可以以任何順序出現在變量中。這意味着有潛在的負載組合,據我所知,逃避管道,我需要編寫負載的潛在組合。 – user2616169

+0

在這種情況下,您的手中有完全不同的問題。我會相應地更新我的答案。 – mzedeler

+0

哦。我看到你已經從@Bohemian得到了幫助。 – mzedeler