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