什么是用于断开变量可能包含“&”的查询字符串的正则表达式
What's a regular expression to break a query string where variables may contain '&'?
如何编写JavaScript正则表达式以将URI分隔为查询字符串变量,其中变量本身可能包含"&"字符?
我目前正在使用以下代码 - 但如果任何变量包含 & 嵌入,它将不会捕获该变量的其余部分。如何缓解这种情况?
function uriParameters() {
var vars = {};
var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
vars[key] = value;
});
return vars;
}
简单的问题:你期望从中得到什么变量?
a=b&c&d=e
是吗?
a=b&c, d=e //or
a=b , c , d=e
所以存在歧义,如果你没有这组名称,你的问题就无法解决。
更新:如果查询字符串仅包含name=value
对,并且没有单个name
参数,则可以通过以下脚本提取这些对:
function getUriParameters( uri ){
//Some sequence of chars that can't be matched in query string
var SYN = ",,,";
var vars = {};
uri.split("=")
.map(function(value){ //Replacing last '&' by SYN value
return value.replace(/&([^&]*)$/,SYN+'$1');
})
.join("=") //Restoring uri
.split(SYN) //
.forEach(function(v){ //Storing 'key=value' pairs
vars[v.split('=')[0]] = v.split('=')[1];
// key value
});
return vars;
}
//Usage-> getUriParameters("a=b&c&d=e")
//Sample
console.log( JSON.stringify(getUriParameters("a=b&c&d=e")) );
//output -> {"a":"b&c","d":"e"}
&
是一个特殊字符,其目的是将URL分解为多个变量。如果它是一个值,则对其进行编码。
另外,我会查看这个答案以获取处理参数的完整函数:如何在 JavaScript 中获取查询字符串值?
相关文章:
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- jquery点击函数select&取消选择
- j查询utc offSets的时差
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- Angular js-返回一个包含类似
- 一点javascript元编程&可链接的设置器
- 如何有效地将游戏数据存储在URL查询字符串中
- 如何处理node.js节点mongodb中的连接和查询队列
- 通过JSON&比较时间
- Jquery模板,如果xx&&如果yy
- 如何从 HTML 查询中删除项目
- 从查询字符串参数推断出正确的数据类型
- 将curl查询转换为jQuery.ajax()
- jQuery工具验证器自定义效果-添加&消除影响
- Solr查询以按日期月份获取数据&年
- 如何编码&在不是't是查询参数的一部分
- 流星.js&collection2-如何查询子架构
- 流星.js&mongoDB-具有多个字段的查询
- BreezeJS 1.3.1打破了我的十进制过滤器&data.inlineCount在我的查询中返回
- 为什么查询不能'在请求中使用amp (&) / %26