我正在进行a / b测试,该测试的目标是在网站的不同级别中具有相同类名的元素:
例如网址:www.sitename.com/service-provided/state/region/city。
当我进入城市级别页面时,我不希望我的代码针对特定元素运行。有100多个不同的城市,因此不希望使用要排除的网址列表。
有没有一种方法可以使用window.location.href.indexOf()和正则表达式仅定位路径的前三个文件夹?
下面是我要实现的示例,如果url在路径的前3个文件夹中具有任何值,则仅运行代码,而不是如果路径进入第4个(城市)文件夹。
$(document).ready(function () {
if (window.location.href.indexOf("?/(.*)/(.*)/(.*)") > -1) {
$(".className").css({"padding-right":"5%"});
}
});
我愿意接受其他可能有效的方法。
谢谢。
使用的解决方案:
p = window.location.pathname.split('/');
if (p.length < 5) {
$(".className").css({"padding-right":"5%"});
}
答案 0 :(得分:1)
像这样
const someURLs = [
'www.sitename.com/massage/new-york/east-coast/manhatan',
'www.sitename.com/massage/new-york/east-coast/bronx',
'www.sitename.com/massage/texas/south/austin',
'www.sitename.com/accounting/texas/south/atlanta',
];
const firstThreeFolders = /\/([^\/]+\/){3}/;
someURLs.forEach(url => {
console.log( url.match(firstThreeFolders)[0] );
});
说明:
匹配一个正斜杠,然后多次匹配不是正斜杠的任何东西,重复三次。
答案 1 :(得分:1)