RegEx for Google Analytics:基于字符串中附加的分隔id值来匹配URL



对于Google Analytics漏斗,我想编写一个regEx,将URL与以下pti-ids匹配:

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

此正则表达式匹配以数字开头但与管道后面的数字不匹配的URL:

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

有近100个id,它们可以以任何顺序出现在变量中。有可能吗?

您需要"单词边界"regex b:

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

使用单词boundary表示id 1与|17|不匹配。

查看各种边缘案例的rubular上的实时演示。

您需要转义管道,因为它们是正则表达式中的保留符号

.*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)($|&.*)

这意味着第一个表达式后面可以跟字符串的末尾,也可以跟&后面跟着任何东西。

最新更新