var keys = {};
source.replace(
/([^=&]+)=([^&]*)/g,
function(full, key, value) {
keys[key] =
(keys[key] ? keys[key] + "," : "") + value;
return "";
}
);
var result = [];
for (var key in keys) {
result.push(key + "=" + keys[key]);
}
return result.join("&");
}
alert(compress("foo=1&foo=2&blah=a&blah=b&foo=3"));
아직도 혼동?이 이해 정규식/(+ [= & ^) = ([^ & *)/g의 + 및 * 사용할 이와
나는 왜 foo = 1과 일치하는지 모르겠다. & –
'^'문자는 NOT을 의미한다. 그래서'[^ = &]'는 NOT =과 NOT &을 의미합니다. 그러므로'foo = 1'은 일치합니다. 중간에있는'='는 내 대답에 표시된 정규 표현식의 중간에있는 '='때문에 일치합니다. –
aw, 그룹 1에서 어떤 문자열과도 일치하지 않음 = 및 & –