Javascript 获取以特定字符串开头的 URL 参数

Javascript get URL parameter that starts with a specific string

使用 javascript,我想 return 以 Loc- 开头的任何 url 参数作为数组.是否有一个正则表达式可以 return 这个,或者一个选项来获取所有 url 参数,然后循环遍历结果?

示例:www.domain.com/?Loc-chicago=test

如果url中有两个,我需要同时获取,如:

www.domain.com/?Loc-chicago=test&Loc-seattle=test2

您可以使用 window.location.search 获取 url 之后(包括 ?)的所有参数。然后只需要遍历每个参数来检查它是否匹配。

不确定您期望得到什么样的数组,但这里有一个非常粗略和基本的示例,仅输出数组中的匹配值:

var query = window.location.search.substring(1);
var qsvars = query.split("&");
var matched = qsvars.filter(function(qsvar){return qsvar.substring(0,4) === 'Loc-'});
matched.map(function(match){ return match.split("=")[1]})

这是一个您可以使用的函数,它接受一个参数作为您正在寻找的参数开头:

function getUrlParameters(var matchVal) {
    var vars = [];
    var qstring = window.location.search;

    if (qstring) {
        var items = qstring.slice(1).split('&');
        for (var i = 0; i < items.length; i++) {
            var parmset = items[i].split('=');
            if(parmset[0].startsWith(matchVal)
                vars[parmset[0]] = parmset[1];
        }
    }
    return vars;
}

使用URLSearchparams

The URLSearchParams interface defines utility methods to work with the query string of a URL.

var url = new URL("http://" + "www.domain.com/?Loc-chicago=test&NotLoc=test1&Loc-seattle=test2");
var paramsString = url.search;

var searchParams = new URLSearchParams(paramsString);

for (var key of searchParams.keys()) {
  if (key.startsWith("Loc-")) {
    console.log(key, searchParams.get(key));
  }
}