我需要使用多个登陆页面来使用Google的A / B测试工具,但是URL的命名意味着我需要使用正则表达式。
我需要一个仅与以下网址匹配的规则:
domain.com/advertorial
但不匹配:
domain.com/advertorial/version1 (could be version5 10 100 etc)
我们正在针对版本目录对advertorial目录中的索引文件进行测试。
问题在于,不同的供应商会在URL中添加参数,并可能在末尾添加/。
我保存了一个正则表达式测试:https://regex101.com/r/Ra318C/2
我们需要一种方法来说明URL仅包含以下内容:
但是如果网址中有额外的目录,例如
domain.com/advertorials/version1
谢谢。
答案 0 :(得分:1)
您可以使用RegEx domain\.com\/advertorial(?:\/(?:\?[^\/]*)?$)?[^\/]*$
domain\.com\/advertorial
偶尔与domain.com/advertorial
匹配
(?:\/(?:\?[^\/]*)?$)?
包括您的网址以advertorial/
[^\/]*
匹配/
之外的0次或多次匹配
$
确保您在字符串的结尾
答案 1 :(得分:0)
别想太多!
您可以使用以下正则表达式:
^domain\.com\/advertorial\/?(\?.*)?$
说明:
^
:字符串的开头domain\.com\/advertorial
:定位主要URL(domain.com/advertorial)\/?
:可选的反斜杠(\?.*)?
:可选查询字符串$
:字符串的结尾答案 2 :(得分:0)
正则表达式:
/domain\.com\/advertorial[\/]?(?:$|\?.*$)/
输入测试字符串:
domain.com/advertorial/version1?test=true
domain.com/advertorial/version1
domain.com/advertorial
domain.com/advertorial?test=true
domain.com/advertorial/
domain.com/advertorial/?test=true
(仅末4个匹配)
一些必要的解释
我将非捕获组与 OR (|
符号)一起使用,条件是:
(?:$|\?.*$)
匹配所需网址后的内容:
-是否将其作为URL的结尾($
符号)
-或以?
符号开头的URL参数。
答案 3 :(得分:0)
您可以尝试
[a-z\-]{2,}\.[a-z]{2,}\/[a-z0-9\-]+\/?(\?[a-zA-Z0-9\=]*)*$
处检查测试用例
答案 4 :(得分:0)
您可以使用:
domain\.com\/advertorial\/?(?:\?[^\/]+)?$
说明
domain\.com\/advertorial
匹配domain.com/advertorial \/?
匹配可选的正斜杠(?:
非捕获组
\?
匹配可选的问号[^\/]+
一次或多次不匹配正斜杠)?
关闭非捕获组并将其设置为可选 $
声明行的结尾