从变量中的字符串转义JavaScript中的双引号

从变量中的字符串转义JavaScript中的双引号,javascript,regex,variables,replace,Javascript,Regex,Variables,Replace,我有两种情况: 我收到了预期的结果: 你好,朋友,怎么了 但是,如果我这样做: var val = 'hello "friend" what\'s up?'; val.replace(/\"/g, '\\"'); console.log(val); 我得到 你好,朋友,怎么了 (结果需要是你好\“朋友\”怎么了?) 唯一的区别是,第二个变量使用一个已经创建的包含字符串的变量。为什么第二个场景实际上没有用\“”替换双引号?实际上是这样做的 val.r

我有两种情况:


我收到了预期的结果:

你好,朋友,怎么了


但是,如果我这样做:

var val = 'hello "friend" what\'s up?';
val.replace(/\"/g, '\\"');
console.log(val);
我得到

你好,朋友,怎么了

(结果需要是
你好\“朋友\”怎么了?


唯一的区别是,第二个变量使用一个已经创建的包含字符串的变量。为什么第二个场景实际上没有用
\“
”替换双引号?

实际上是这样做的

val.replace(/\"/g, '\\"');
您没有将替换的值重新分配给
val
。为此,您需要:

val = val.replace(/\"/g, '\\"');
在上述代码中,您没有重新分配到
val

尝试此操作以获得预期结果

val = val.replace(/\"/g, '\\"');
从:

replace()方法返回一个新字符串,其中模式的部分或全部匹配项被替换


您需要执行
val=val.replace(/\“/g,\\\”);
以便将调用
replace
返回的新字符串分配给您的变量。

我觉得很愚蠢。打开了我的“jQuery”模式,如
$(this.attr('something',value'));
谢谢!是否需要使用正则表达式来简单替换文字字符串?可能重复:
val.replace(/\"/g, '\\"');
val = val.replace(/\"/g, '\\"');