需要功能编辑

Function edit needed

目前,以下代码接受一个 href 并将稍后调用的所有参数排列起来:

function getUrlVars() {
    var vars = {};
    var parts = window.location.href.replace(
        /[?&]+([^=&]+)=([^&]*)/gi,
        function (m, key, value) {
            vars[key] = value;
        });
    return vars;
}

这与 href 一起工作,href 的参数设置类似于 url 中的 parameter=value。我在网上找到了这个函数,但不了解很多 javascript 但需要对其进行编辑,而不是 = 作为参数和值之间的分隔因子,而是 %3A 。因此,例如 parameter%3Avalue 由于我正在处理的网站上的格式不同。我不确定这个函数是如何工作的,所以我很难编辑它。感谢您的帮助。

/[?&]+([^=&]+)%3A([^&]*)/gi

例如:?parameter%3Avalue

/([^=&]+)%3A([^&]*)/gi

例如:参数 %3Avalue

它正在使用匹配字符串一部分的正则表达式。 replace 方法将用第二个参数(在您的示例中是一个函数)替换匹配部分。下次您可以使用正则表达式测试器,例如https://regex101.com

如果您需要解码格式的多个项目,您应该首先尝试将 decodeURIComponent 应用于 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 中最难的概念之一,但一旦你学会了它们就会非常有用。