试试这个:
str.replace("\"", "\\\""); // (Escape backslashes and embedded double-quotes)
或者,使用单引号来引用您的搜索并替换字符串:
str.replace('"', '\\"'); // (Still need to escape the backslash)
正如helmus所指出的,如果传递给的第一个参数.replace()是一个字符串,它只会替换第一个出现的参数。要全局替换,您必须传递带有g(全局)标志的正则表达式:
str.replace(/"/g, "\\\"");
// or
str.replace(/"/g, '\\"');
但是你为什么还要在 JavaScript 中这样做呢?如果您有如下字符串文字,则可以使用这些转义字符:
var str = "Dude, he totally said that \"You Rock!\"";
但这仅在字符串文字中是必需的。也就是说,如果您的 JavaScript 变量设置为用户在表单字段中键入的值,则您不需要此转义。
关于您在 SQL 数据库中存储此类字符串的问题,如果您在 SQL 语句中嵌入字符串文字,您只需要转义字符 - 请记住,适用于 SQL 的转义字符不是(通常)与 JavaScript 相同。您将在服务器端执行任何与 SQL 相关的转义。