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"));
я до сих пор путают с этим/([^ = &] +) = ([^ &] *)/г, + и * использовать для?понимание это регулярные выражения
Я просто не понимаю, почему match foo = 1, он не получил & –
Символ '^' означает NOT. Итак, '[^ = &]' означает NOT = и NOT &. Следовательно, 'foo = 1' соответствует. Символ '=' в среднем совпадает из '=' в середине регулярного выражения, как показано в моем ответе. –
aw, я получил его, в группе 1, он не соответствует началу строки с = и & –