替换所有\";带\\\";在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