尝试使用Regex解析URL [Javascript]

时间:2014-11-10 21:31:03

标签: javascript regex

我在解析以下网址的一部分时遇到了一些问题:

http://port-80.********************************************.box.************.com/********/search/?sid=123875&brands=DELL|KROCKS&sort=popularity

我试图解析以下内容:DELL | KROCKS。

到目前为止,我有以下正则表达式,它在某种程度上起作用:

/brands=(.*)[\&?]/

以上所做的是如果&品牌之后的品牌,它将得到以下:DELL | KROCKS。但是,如果&不存在,它将获得以下内容:DELL | KROCKS& sort = popular。

有什么方法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

使用通用网址解析器。

像这样:How to get the value from URL Parameter?

function getQueryParams(qs) {
    qs = qs.split("+").join(" ");

    var params = {}, tokens,
        re = /[?&]?([^=]+)=([^&]*)/g;

    while (tokens = re.exec(qs)) {
        params[decodeURIComponent(tokens[1])]
            = decodeURIComponent(tokens[2]);
    }

    return params;
}
var query = getQueryParams("http://port-80.********************************************.box.************.com/********/search/?sid=123875&brands=DELL|KROCKS&sort=popularity");
alert(query.brands);

答案 1 :(得分:0)

我做的就是这个品牌=(。*?)(?:& | $)

这是使用组测试正则表达式的一个很好的工具 https://www.debuggex.com/r/WgYVhtG4Zrn4f5gH