Если ни одна из двойных кавычек в строке не экранирована, вы можете просто сделать:
str = str.replace(/"/g, "\\\"");
В противном случае вам следует проверить, не сбежал ли он, и заменить только, если это не так; Вы можете использовать lookbehind для этого. Следующее - то, что пришло мне в голову первым, но это не сработало бы для строк типа escaped backslash followed by quotes \\" :(
str = str.replace(/(?<!\\)"/g, "\\\"");
Следующее гарантирует, что второй последний символ, если он существует, не является обратной косой чертой.
str = str.replace(/(?<!(^|[^\\])\\)"/g, "\\\"");
Обновление: только что вспомнил, что JavaScript не поддерживает просмотр ; вы можете использовать то же регулярное выражение в вспомогательном движке регулярных выражений, таком как perl / php / .net и т. д.