目标是解析嵌入在URL的哈希部分中的参数。有人在StackOverflow社区提供了下面的代码作为对类似问题的回应。社区选择了这个代码作为一个合适的解决办法,因此它被集成到自己的代码如下:使用JavaScript正则表达式解析查询字符串
Utils.parseQueryStringArgs=function(queryString){
var result = {}, queryString = queryString.substring(1),
re = /([^&=]+)=([^&]*)/g, m;
while (m = re.exec(queryString)) {
result[decodeURIComponent(m[1])] = decodeURIComponent(m[2]);
}
return result;
}
有正则表达式的零知识,上面的“重”变量是没有意义的我,但尚未结构该代码是有道理的。它完美地工作,直到窒息下列算式:
friendlySeriesName=Test%3A%20Fund.Feeder%20[class%20A]%20%26gt%3B%26gt%3B%20Morgan%2C%20Harry%20%40%201
预期的行为是解析出的“friendlySeriesName”属性名称和“测试Fund.Feeder [A类] >>摩根,哈里的属性值@ 1“。然而,正在发生的事情是正确解析属性名称和“Test:Fund.Feeder [class A]”的解析值。除了大于号(“>>”)之外的所有内容都会被这个解析函数抛弃。
问题:你可以修改变量're'的值,使得上面的函数能够正确地在提供的示例表达式上正常工作,或者提供一种简单的方法从哈希表中解析出键值对一个编码的url字符串?
我强烈建议不要使用该代码来分析查询字符串。查询字符串“?foo = bar&foo = baz”应该被解析为'['bar','baz']'。有[现有的JS库](http://medialize.github.com/URI.js/)可用于正确解析URI,并因此查询字符串。 – zzzzBov