有没有比使用正则表达式更好的方法来从URL字符串的查询字符串中删除参数的标准JavaScript?
到目前为止,这是我想到的方法,在我的测试中似乎有效,但我不喜欢重新发明查询字符串解析!
function RemoveParameterFromUrl(url, parameter) { if (typeof parameter == "undefined" || parameter == null || parameter == "") throw new Error("parameter is required"); url = url.replace(new RegExp("\b" + parameter + "=[^&;]+[&;]?", "gi"), ""); // 移除任何剩余的垃圾 url = url.replace(/[&;]$/, ""); return url; }
现代浏览器提供了
URLSearchParams
接口来处理搜索参数。该接口具有delete
方法,可以根据名称删除参数。看起来很危险,因为参数 'bar' 会匹配:
此外,如果
parameter
中包含任何在正则表达式中有特殊含义的字符,比如 '.',这个正则表达式就会失败。而且它不是全局正则表达式,所以只会删除一个参数的实例。我不会使用简单的正则表达式来做这个,我会解析参数并丢弃不需要的参数。