您可以使用 regex replacemnt 将原始字符串转换为所需的字符串:
var s='[donor="company1" web="http://company1.com" amount="5.50"];[donor="company2" web="http://company2.com" amount="40.00"]';
s='[' + s.replace(/\[/g,'{').replace(/\]/g,'}').replace(/=/g,':')
.replace(/"\s/g,'", ').replace(/{(.+?):/g,'{"$1":')
.replace(/;/g,',\r\n') + ']';
此转换的结果是您想要获取的字符串,它是对象数组的 JSON 表示法。
如果您评估此 JSON 表达式,您将获得对象数组。
如果将这些行添加到上一个脚本的末尾,您将看到一个长度为 2 的数组,其中包含 JSON 表示的对象:
var t = eval(s);
alert(t.length); // output 2, which is the array length
alert(t[0].donor); // outputs company1, which is the donor of the first object in the array
您可以在w3schools 中使用此代码尝试自己编辑器。复制并粘贴此代码:
<html>
<head>
<script type="text/javascript">
var s='[donor="company1" web="http://company1.com" amount="5.50"];[donor="company2" web="http://company2.com" amount="40.00"]';
s='[' + s.replace(/\[/g,'{').replace(/\]/g,'}').replace(/=/g,':')
.replace(/"\s/g,'", ').replace(/{(.+?):/g,'{"$1":')
.replace(/;/g,',\r\n') + ']';
var t = eval(s);
alert("Array length: " + t.length);
alert("1st object donor: " + t[0].donor);
</script>
</head>
<body>
</body>
</html>