Wie entferne ich Abfragezeichenfolgenparameter in JavaScript?
P粉239164234
P粉239164234 2023-08-20 18:46:10
0
2
488
<p>Gibt es eine bessere Möglichkeit, Parameter aus der Abfragezeichenfolge einer URL-Zeichenfolge zu entfernen als Standard-JavaScript mithilfe regulärer Ausdrücke? </p> <p>Das ist es, was ich mir bisher ausgedacht habe, und es scheint in meinen Tests zu funktionieren, aber ich mag es nicht, das Parsen von Abfragezeichenfolgen neu zu erfinden! </p> <pre class="brush:php;toolbar:false;">function RemoveParameterFromUrl(url, Parameter) { if (typeof Parameter == "undefiniert" || Parameter == null || Parameter == "") throw new Error("Parameter ist erforderlich"); url = url.replace(new RegExp("b" + Parameter + "=[^&;]+[&;]?", "gi"), ""); // Entfernen Sie den restlichen Müll url = url.replace(/[&;]$/, ""); Rückgabe-URL; }</pre></p>
P粉239164234
P粉239164234

Antworte allen(2)
P粉163465905

现代浏览器提供了URLSearchParams接口来处理搜索参数。该接口具有delete方法,可以根据名称删除参数。

if (typeof URLSearchParams !== 'undefined') {
  const params = new URLSearchParams('param1=1&param2=2&param3=3')
  
  console.log(params.toString())
  
  params.delete('param2')
  
  console.log(params.toString())

} else {
  console.log(`您的浏览器 ${navigator.appVersion} 不支持URLSearchParams`)
}
P粉506963842
"[&;]?" + parameter + "=[^&;]+"

看起来很危险,因为参数 'bar' 会匹配:

?a=b&foobar=c

此外,如果 parameter 中包含任何在正则表达式中有特殊含义的字符,比如 '.',这个正则表达式就会失败。而且它不是全局正则表达式,所以只会删除一个参数的实例。

我不会使用简单的正则表达式来做这个,我会解析参数并丢弃不需要的参数。

function removeURLParameter(url, parameter) {
    //如果你有一个location/link对象,最好使用l.search
    var urlparts = url.split('?');   
    if (urlparts.length >= 2) {

        var prefix = encodeURIComponent(parameter) + '=';
        var pars = urlparts[1].split(/[&;]/g);

        //反向迭代可能会破坏性
        for (var i = pars.length; i-- > 0;) {    
            //字符串.startsWith的习惯用法
            if (pars[i].lastIndexOf(prefix, 0) !== -1) {  
                pars.splice(i, 1);
            }
        }

        return urlparts[0] + (pars.length > 0 ? '?' + pars.join('&') : '');
    }
    return url;
}
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage