Это работает, но это не чистое регулярное выражение:
var str = '[{"name":"obj1", "list":["elem1", "elem2", "elem3"]},'
+ '{"name":"obj2", "list":["elem4", "elem5", "elem6"]}]';
str = str.replace(/"list":\[[^\]]+\]/g, function (match) {
return '"list":' + match.substring(7, match.length).replace(/([^\\])"/g, '$1');
});
document.write(str);
По сути, он делит процесс на две части: во-первых, найдите подстроки списка; а во-вторых, удалите из них апострофы.
Вы можете сделать это с чистым регулярным выражением, если javascript поддерживает переменную длину, а это не так.
Отредактировано, чтобы разрешить экранированные апострофы в элементах списка, как предложено MrP.