替换所有\";带\\\";在javascript中

替换所有\";带\\\";在javascript中,javascript,regex,Javascript,Regex,我想用\\”替换字符串中的所有\”(中的\“) var str='{“CarID”:“Z100”,“alerts”:[{“AlertType”:“向东南方向驶向塔恩河”ả我对Trườnhan cuoi dep的ng ChinhPass(右侧)“}],“定制地点”:[]}'; str=str.replace(/\“/g,\\\\”); 我希望输出是(\”中的样式被\\”替换): {“VehicleID”:“Z100”,“警报”:[{“警报类型”:“向东南方向驶向塔纳河”ả我对Trườnhan c

我想用
\\”
替换字符串中的所有
\”
中的
\“

var str='{“CarID”:“Z100”,“alerts”:[{“AlertType”:“向东南方向驶向塔恩河”ả我对Trườnhan cuoi dep的ng ChinhPass(右侧)“}],“定制地点”:[]}';
str=str.replace(/\“/g,\\\\”);
我希望输出是(
\”
中的
样式
\\”
替换):

{“VehicleID”:“Z100”,“警报”:[{“警报类型”:“向东南方向驶向塔纳河”ả我对Trườnhan cuoi dep的ng ChinhPass(右侧)“}],“定制位置”:[]}

但实际上我得到的是(所有的
都被
\\”
替换):

{\\\“车辆ID\\”:\\\“Z100\\”,\\\“警报\\”:[{\\“警报类型\\”:\\“向东南方向驶向T–n Hả我对Trườnhan cuoi dep的ng ChinhPass(右侧)\\\“}]}


我不想使用jQuery,有人能帮帮我吗!

您的正则表达式中有一个小问题。反斜杠
\
表示转义。因此,当您编写
\“
时,它只会找到一个引号,反斜杠会转义,因为它是一个特殊字符。 必须避开反斜杠和引号:

str = str.replace(/\\\"/g, '\\\\"');
这将产生预期的结果

请阅读问题下方用户zerkms的评论。我真的不明白这种替换有什么好处。也许你有所谓的x-y问题:

编辑:

上面发布的代码行需要工作,因为用户zerkms在下面的评论中解释了原因。使用原始字符串有一个变通方法:

String.raw`\"`.replace(/\"/g, '\\"');

这是经过测试的,应该可以使用。

如果要从HTML输入标记获取路径,并且需要将\in路径替换为\\,以便在代码中进行进一步处理。您可以使用以下命令

var myString = $('#myID').val(); // c:\User\path
console.log(myString.split('\\').join('\\\\')); // c:\\User\\path

你为什么要那样?将字符串操作函数应用于JSON序列化的字符串看起来是一个可怕的想法。如果我不将
\\“
替换为
\\”
,我就无法将该字符串解析为对象(使用JSON.parse)。好吧,它是一个有效的JSON,但您不能只获取任意字符串,用单引号将其包装,并期望保留其语义。您需要解释潜在的问题:您是如何获得此代码的?这个字符串是从哪里来的,又是如何来的?我从谷歌地图上得到这个字符串,当我使用GSON解析它到我定义的对象时,它是可以的。但是,当我将该字符串作为参数传递给Android webview中的javascript函数时,我不能在该函数中使用JSON.parse将其转换为objectI。我不想过度使用注释区域,但对于问题使用标记
regex
,并可能删除标记
html
,这是非常合理的。明确寻找正则表达式的人会发现你的问题更简单、更快。
“\”。替换(/\\\\“/g,\\\\\”);
你的建议没有任何作用,因为没有任何东西可以替换(因为正如你提到的,真正的字符串中根本没有斜杠)谢谢@zerkms!我在没有事先测试的情况下发布到fast。谢谢@cezar,它工作了,但我编辑了一点
String.raw
\“
.replace(/\\”/g,\\”)由于反引号,注释中的代码被截断。
var myString = $('#myID').val(); // c:\User\path
console.log(myString.split('\\').join('\\\\')); // c:\\User\\path