从变量中的字符串转义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, '\\"');