Javascript 解析选项字符串

Javascript 解析选项字符串,javascript,parsing,Javascript,Parsing,如何像这样解析字符串 Text=“安德烈的照片;假期”;字体=Arial;尺寸=12 到javascript对象,如: var options = { text: 'Andrey\'s Photos; Vacation', font: 'Arial', size: 12 } 我的问题是该值可能包含和=字符,所以我不能只使用s.split(“;”)。但是如果值字符串中有这样的符号,则该值应该用单引号或双引号括起来。因此,应该可以解析该字符串。假设答案为否: var s = 'Text

如何像这样解析字符串

Text=“安德烈的照片;假期”;字体=Arial;尺寸=12

到javascript对象,如:

var options = {
  text: 'Andrey\'s Photos; Vacation',
  font: 'Arial',
  size: 12
}

我的问题是该值可能包含
=
字符,所以我不能只使用
s.split(“;”)
。但是如果值字符串中有这样的符号,则该值应该用单引号或双引号括起来。因此,应该可以解析该字符串。

假设答案为否:

var s = 'Text="Andrey\'s Photos; Vacation";Font=Arial;Size=12;SingleQuoted=\'The dog said "Foo"\'';
var re = /(.*?)=(?:"(.*?)"|'(.*?)'|([^;]*?))(?:;|$)/g;
var match;

var options = {}
while(match = re.exec(s))
{  
    var string_val = match[2] || match[3] || match[4];
    var num_val = parseFloat(string_val);
    var val = isNaN(num_val) ? string_val : num_val;
    options[match[1].toLowerCase()] = val;
}
编辑:已编辑以允许使用“或”作为分隔符。但是,您仍然无法转义


< >编辑2:如果适用的话,编辑使用数字类型。现在,它只是检查它是否可以强制转换为一个数字,而不是试图考虑引号。< /P>双引号可以作为<代码> \“<代码>被转义吗?