如何在JavaScript中删除查询字符串参数? [英] How can I delete a query string parameter in JavaScript?

查看:372
本文介绍了如何在JavaScript中删除查询字符串参数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

除了使用正则表达式之外,还有更好的方法从标准Ja​​vaScript中的URL字符串中的查询字符串中删除参数吗?

Is there better way to delete a parameter from a query string in a URL string in standard JavaScript other than by using a regular expression?

这是我的意思到目前为止似乎在我的测试中工作,但我不喜欢重新发明查询字符串解析!

Here's what I've come up with so far which seems to work in my tests, but I don't like to reinvent querystring parsing!

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" ), "" ); "$1" );

    // remove any leftover crud
    url = url.replace( /[&;]$/, "" );

    return url;
}


推荐答案

"[&;]?" + parameter + "=[^&;]+"

因为参数'bar'似乎很危险匹配:

Seems dangerous because it parameter ‘bar’ would match:

?a=b&foobar=c

此外,如果参数包含RegExp中特殊的任何字符,例如。,它将失败。并且它不是全局正则表达式,因此它只会删除参数的一个实例。

Also, it would fail if parameter contained any characters that are special in RegExp, such as ‘.’. And it's not a global regex, so it would only remove one instance of the parameter.

我不会使用简单的RegExp,我会解析参数输入并丢失你不想要的。

I wouldn't use a simple RegExp for this, I'd parse the parameters in and lose the ones you don't want.

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= encodeURIComponent(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;
}

这篇关于如何在JavaScript中删除查询字符串参数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆