我正在尝试使用一个规则表达式来提取查询字符串参数的值
到目前为止,我带来了以下内容:
app.getValue = function() {
var regExp = '[&?]'+$("#token").val()+'=(.*?)[&$]';
var re = new RegExp(regExp);
var res = re.exec($("#url").val());
if (!res) return '';
return res[1] || '';
}
问题似乎是结果表达式结尾处的“$”被作为文字字符解释,而不是作为输入字符串的结尾
所以使用followgin查询字符串:
http://wines?len=10&page=500&filter=bogota and salvador&sort=name asc
如果我添加一个“&”,那么找到令牌“sort”并不能得到任何东西。或者字符串末尾的“$”...
我错过了什么吗?
答案 0 :(得分:1)
我看起来无法在字符类组中表达行尾字符。相反,我认为您可以使用(&|$|,)
来匹配逗号,符号或行尾。请注意,这会创建一个新的匹配组,但这不会影响您的代码。
答案 1 :(得分:1)
试试这个
var urlParams = {};
(function () {
var match,
pl = /\+/g, // Regex for replacing addition symbol with a space
search = /([^&=]+)=?([^&]*)/g,
decode = function (s) { return decodeURIComponent(s.replace(pl, " ")); },
query = window.location.search.substring(1);
while (match = search.exec(query))
urlParams[decode(match[1])] = decode(match[2]);
})();
示例:
?var1=test1&var2=test2
结果:
alert(urlParams["var1"]);