Предполагая, что ответ - нет:
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;
}
РЕДАКТИРОВАТЬ: отредактировано, чтобы разрешить использование либо "или" в качестве разделителя. Однако вы все равно не можете выйти.
EDIT 2: отредактировано для использования числового типа, если применимо. Прямо сейчас он просто проверяет, можно ли привести его к числу, вместо того, чтобы пытаться рассмотреть кавычки.