Вы можете использовать функцию в качестве замены в replace()
.Затем он может выполнить собственную замену в группе захвата.
var string = '[link="<iframe"qwe"></iframe>"]';
var output = string.replace(/link="([^\]]+)"]/g, (match, group1) =>
'link="' + group1.replace(/"/g, "'") + '"]');
console.log(output);
Обратите внимание, что мне пришлось исправить ваше регулярное выражение.([^"]+)
должно быть ([^\]]+)
, чтобы оно могло соответствовать строке, содержащей двойные кавычки - вам нужно захватить ее, чтобы заменить двойные кавычки.
А во второй замене вы хотите сопоставить "
, а не [^"]+