Regex 如何使用正则表达式在URL中找到两个组?

Regex 如何使用正则表达式在URL中找到两个组?,regex,Regex,我不是一个程序员,但我需要在谷歌标签管理器使用正则表达式创建一个规则。我的目标是查看URL并在URL中找到两个单独的组匹配项。下面是一个示例URL http://123.website.com/?&guid=blahblahblah&page=something&type=abc&adv=abc1234&site={siteID} 我最初在下面有一个正则表达式,如果不是两组之间的&guid=blahblahblah&page=something&的话,这

我不是一个程序员,但我需要在谷歌标签管理器使用正则表达式创建一个规则。我的目标是查看URL并在URL中找到两个单独的组匹配项。下面是一个示例URL

http://123.website.com/?&guid=blahblahblah&page=something&type=abc&adv=abc1234&site={siteID}
我最初在下面有一个正则表达式,如果不是两组之间的&guid=blahblahblah&page=something&的话,这个正则表达式非常有效。如何在一个表达式中检查这两个组

(http:\/\/)(([0-9])|([0-9][0-9])|([0-9][0-9][0-9]))\.website\.com\?(type\=abc)
奖励:我如何让它检查https和http


谢谢

在你们对这个答案的第一版发表评论之后,我在谷歌标签管理器的页面上读到了一些关于规则的内容

显然,如果URL

以http://或https://开头, 任何带有1到3位数字的数字, .website.com/, 并且在url中还包含type=abc。 我无法对此进行测试,但以下规则应该有效:

{{url}} matches RegEx https?://\d{1,3}\.website\.com/.*type=abc.*adv=.*
Google Tag Manager的正则表达式引擎有望支持Perl正则表达式语言集中的那些基本正则表达式

说明:

http是一个固定字符串,它必须存在于URL开头

正如Sam所写,s后面的问号使s的存在成为可选的

://还是一个固定字符串,它必须存在于http或https之后的URL中

\d{1,3}与任何数字0-9至少匹配一次,但不超过3次。所以它匹配从0到999的数字。任何其他字符或更多数字都会导致该规则为false

\.website\.com/又是一个固定字符串,因此该点被解释为文字字符


.*匹配两次URL的任何字符0次或更多次。

这实际上比您想象的要容易:

/https?:\/\/([\d]{1,4})\.website\.com\/.*?&type=(.*?)&.*?/

你确定要在一个正则表达式中完成所有这些吗?你使用哪种语言,也许它有一个更方便的功能来处理URL?你的问题不是很清楚。。。您是否可以编辑它以解释您希望从URL中提取的内容以及输入/输出示例?要匹配http或https,请使用https?这将使s成为可选的。来自的回答(在“常见验证任务”下列出)可能会引起兴趣:。确定。我希望能够检查以下内容:其中123是一个随机数,可以是一位数字,也可以是3位数字,并且类型完全匹配=abcMaybe,因为它是两个独立的规则。如果是这样的话,我想答案很简单。https?:\/\/[0-9]\[0-9][0-9]\[0-9][0-9][0-9]\.tynon\.com和type=abcSorry的另一条规则我错过了你的答案。我不知道它是否支持perl表达式,但您的答案似乎就是我想要做的。我现在的目标是将其扩展为包括查找第三组adv=的匹配项。如果URL中的参数adv=始终在参数type=abc之后,只需将adv=附加到正则表达式的末尾。*。或者,在表达式的末尾插入一个字符串&adv=如果字符串类型=abc&adv=总是在这种形式的url中。出于某种原因,Google将其踢出{{url}匹配RegEx https?:\/\/[1-9]\d{0,3}\.website\.com\/.*type=abc&;adv=abc1234。这条规则似乎不起作用。你觉得我需要逃出这个符号吗?酷。看起来这也将捕获type=abcdefg。忘记提到type=有时超过3个字符。您想获取子域和类型,对吗?有没有失败的情况?数字部分不太可能超过4位,只能是数字。这很重要。我不想要字母匹配。它们的类型=长度不同,可能包含字母和数字的混合。太棒了!做了一些测试,我发现我需要能够硬编码type=as in type=abc的值,而不仅仅是查找值。有道理?它需要精确匹配,因为数字不匹配。他们只需要一开始就在场,伙计!找到了一个失败的地方。不是因为代码不起作用,而是因为我需要与adv=abc1234进行额外匹配,其中abc1234是一个特定值。到目前为止,我改变了你的代码,这似乎是可行的,但我需要扩展它,以包括adv=这里是我所拥有的。很可能这是一种糟糕的形式。https?:\/\/[\d]{1,4}\.website\.com\/.*?&type=abc