当前,下面的代码接受href并排列所有稍后要调用的参数:
function getUrlVars() {
var vars = {};
var parts = window.location.href.replace(
/[?&]+([^=&]+)=([^&]*)/gi,
function (m, key, value) {
vars[key] = value;
});
return vars;
}
与具有参数设置的href一起使用,例如在URL中设置parameter = value。我在网上找到了此函数,并且不了解很多javascript,但需要对其进行编辑,以便= =而不是参数和值之间的分母,而是%3A。因此,例如参数%3Avalue由于我正在处理的网站上的格式不同。我不确定该函数的工作方式,因此我很难对其进行编辑。谢谢您的帮助。
/[?&]+([^=&]+)%3A([^&]*)/gi
例如:?parameter%3Avalue
/([^=&]+)%3A([^&]*)/gi
对于类似:parameter%3Avalue
它正在使用正则表达式,该正则表达式与字符串的一部分匹配。然后replace方法将匹配的部分替换为第二个参数(在您的示例中为函数)。下次您可以使用Regex测试仪,例如https://regex101.com
如果您需要解码格式的多个项目,则应先尝试将解码URIComponent应用于href字符串。如果只是您要始终解码的%3A,则可能最简单的是先对其进行解码(这样,字符串的确看起来像是使用=
符号)。
function getUrlVars() {
var vars = {};
var partsWithEqSign = window.location.href.replace(/%3A/g, "=");
var parts = partsWithEqSign.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
vars[key] = value;
});
return vars;
}
顺便说一句,所使用的部分代码涉及正则表达式,正则表达式是JavaScript中最困难的概念之一,但是一旦学习它们就非常有用。