Javascript 什么';s一个正则表达式,用于中断变量可能包含'&';?
如何编写JavaScript正则表达式以将URI分隔为查询字符串变量,其中变量本身可能包含“&”字符 我目前正在使用以下代码-但是如果任何变量包含一个&embedded,它将不会捕获该变量的其余部分。如何减轻这种情况Javascript 什么';s一个正则表达式,用于中断变量可能包含'&';?,javascript,regex,web,Javascript,Regex,Web,如何编写JavaScript正则表达式以将URI分隔为查询字符串变量,其中变量本身可能包含“&”字符 我目前正在使用以下代码-但是如果任何变量包含一个&embedded,它将不会捕获该变量的其余部分。如何减轻这种情况 function uriParameters() { var vars = {}; var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,
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分解为多个变量。如果是值,则对其进行编码
此外,我还想看看这个答案,看看是否有一个完整的函数来处理参数:为了避免所有的麻烦,在发送参数之前先对参数进行编码。我无法控制URI中传递的内容。我只是把它拆开,在JS中阅读。
&
可以同时出现在名称和值中吗?我认为如果&
只能出现在值中,那么歧义可以解决。当然,三种不同的形式至少需要两种断言:)所需的结果是a=b&c,d=e。