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 式を評価すると、オブジェクトの配列が取得されます。
これらの行を前のスクリプトの最後に追加すると、JSON で表されるオブジェクトを含む長さ 2 の配列が得られることがわかります。
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 try it yourself エディタでこのコードをいじることができます。このコードをコピーして貼り付けます。
<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>