需要功能编辑

问题描述 投票:-1回答:2

当前,下面的代码接受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由于我正在处理的网站上的格式不同。我不确定该函数的工作方式,因此我很难对其进行编辑。谢谢您的帮助。

javascript url href
2个回答
0
投票
/[?&]+([^=&]+)%3A([^&]*)/gi

例如:?parameter%3Avalue

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

对于类似:parameter%3Avalue

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.