"[&;]?" + parameter + "=[^&;]+"
似乎很危险,因为它的参数“ bar”会匹配:
?a=b&foobar=c
另外,如果
parameter包含RegExp中特殊的任何字符(例如“。”),它将失败。而且它不是全局正则表达式,因此只会删除该参数的一个实例。
我不会为此使用简单的RegExp,而是会解析其中的参数并丢失您不需要的参数。
function removeURLParameter(url, parameter) { //prefer to use l.search if you have a location/link object var urlparts = url.split('?'); if (urlparts.length >= 2) { var prefix = enpreURIComponent(parameter) + '='; var pars = urlparts[1].split(/[&;]/g); //reverse iteration as may be destructive for (var i = pars.length; i-- > 0;) { //idiom for string.startsWith if (pars[i].lastIndexOf(prefix, 0) !== -1) { pars.splice(i, 1); } } return urlparts[0] + (pars.length > 0 ? '?' + pars.join('&') : ''); } return url;}


