javascript - 基于 "&"拆分字符串(url params 字符串),同时允许 & 在参数值内

标签 javascript regex string split

我有一个像这样的字符串:

Id=bzat4e&Name=Gallery: Blitzer: Algebra & Trigonometry, 4e&Year=2016&Code=bzat4e

我想在 & 的基础上拆分它,同时允许 & 内部值。

基本上它是一串 url 参数,我根据 JavaScript 中的键获取值。

I/P 
var paramList = Id=bzat4e&Name=Gallery: Blitzer: Algebra & Trigonometry, 4e&Year=2016&Code=bzat4e

O/P
[Id="bzat4e", Name="Gallery: Blitzer: Algebra & Trigonometry, 4e", Year="2016", Code="bzat4e"]

最佳答案

您可以使用split() 将其作为数组获取

var str = 'Id=bzat4e&Name=Gallery: Blitzer: Algebra & Trigonometry, 4e&Year=2016&Code=bzat4e';
var res = str.split(/&(?=[^=&]+=)/);
console.log(res);

<小时/>

要将数组转换为对象,请使用 reduce()

var str = 'Id=bzat4e&Name=Gallery: Blitzer: Algebra & Trigonometry, 4e&Year=2016&Code=bzat4e';
var res = str.split(/&(?=[^=&]+=)/).reduce(function(a, b) {
  var spl = b.split('=');
  a[spl[0].trim()] = spl[1];
  return a;
}, {});
console.log(res);

<小时/>

对于旧浏览器,请检查 polyfill option for reduce() method .

<小时/>

Regex explanation here

Regular expression visualization

关于javascript - 基于 "&"拆分字符串(url params 字符串),同时允许 & 在参数值内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37322038/

相关文章:

c# - 拆分字符串时使用十六进制作为分隔符

javascript - 如何按 Javascript 中的值对关联数组进行排序?

相当于Scrapy的Javascript框架

java - 删除引号的正则表达式

Python:从日期、分数、百分比等字符串中提取数字

C# 正则表达式不删除所有不需要的字符?

html - 搜索特定代码字符串

javascript - 将 JSON 字符串传递给 Django 模板

javascript - 使用导入,服务器如何与客户端通信?

用于调整空格的 Java 正则表达式