Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试使用正则表达式[Javascript]解析URL_Javascript_Regex - Fatal编程技术网

尝试使用正则表达式[Javascript]解析URL

尝试使用正则表达式[Javascript]解析URL,javascript,regex,Javascript,Regex,我在解析以下URL的一部分时遇到一些问题: http://port-80.********************************************.box.************.com/********/search/?sid=123875&brands=DELL|KROCKS&sort=popularity 我试图解析出以下内容:戴尔·克罗克 到目前为止,我有以下在一定程度上有效的正则表达式: /brands=(.*)[\&?]/ 上面所做的是,

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

http://port-80.********************************************.box.************.com/********/search/?sid=123875&brands=DELL|KROCKS&sort=popularity
我试图解析出以下内容:戴尔·克罗克

到目前为止,我有以下在一定程度上有效的正则表达式:

/brands=(.*)[\&?]/
上面所做的是,如果&character在品牌后面,它将得到以下内容:DELL | KROCKS。然而,如果&不存在,它将得到以下结果:DELL | KROCKS&sort=受欢迎程度


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

使用通用URL解析器

像这样:

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

这是使用组测试正则表达式的一个很好的工具

为什么不直接匹配
[^&?]*
而不是
(.*)[\&?]
?如果“the&”不存在,它如何“获得以下信息:DELL | KROCKS&sort=popularity”?您是否尝试过使用任何URL解析库将查询部分分解为有用的部分?这很有效:[^&?]*!非常感谢你!品牌=([^&?]*)
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);