如何替换URL的一部分并重新加载页面?

时间:2015-02-17 03:53:27

标签: javascript regex url greasemonkey

我需要为Greasemonkey编写一个脚本来检查URL,在满足某些条件时替换它的一部分,然后重新加载页面。

相关网址将始终采用以下格式:

https://optionA.example.com/ab/first/second/tonsOfMetadata

https://optionB.example.com/ab/first/second/tonsOfMetadata

我需要脚本检查“第一个/第二个”段,然后将其替换为“第三个/第四个”。这些将永远是相同的。唯一会从URL更改为URL的是元数据和子域,它们将是A或B.

这是我正在尝试的代码:

var url = window.location.host; 
var regex = /^(https?:\/\/)([^.]+\.)(example\.com\/ab\/)first\/second(\/.+)$/i;

if (url.match(regex) != null){
url = window.location.href;
url = url.replace(regex,"$1$2$3third/fourth$4");
    return;
}

console.log(url);
window.location.replace(url);
}

我确信我错过了一些明显的东西,但我的编码经验有限。我已经从这里调整了代码:Replace parts of a URL in Greasemonkey并且从这里开始:Rewrite parts of a URL in Greasemonkey and FireFox

任何帮助都将非常感谢,提前感谢!

1 个答案:

答案 0 :(得分:0)

可能你需要这个:

var url = window.location.host; 
var regex = /^(https?:\/\/)([^.]+\.)(example\.com\/ab\/)first\/second(\/.+)$/i;

if (url.match(regex) != null) {
    url = window.location.href;
    url = url.replace(regex,"$1$2$3third/fourth$4");
}
console.log(url);
window.location.href = url;

而不是你对替换方法的调用(我不认为,它存在)。你的"返回"声明似乎是多余的/错误的。