我在解析以下网址的一部分时遇到了一些问题:
http://port-80.********************************************.box.************.com/********/search/?sid=123875&brands=DELL|KROCKS&sort=popularity
我试图解析以下内容:DELL | KROCKS。
到目前为止,我有以下正则表达式,它在某种程度上起作用:
/brands=(.*)[\&?]/
以上所做的是如果&品牌之后的品牌,它将得到以下:DELL | KROCKS。但是,如果&不存在,它将获得以下内容:DELL | KROCKS& sort = popular。
有什么方法可以解决这个问题吗?
答案 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