在javascript

时间:2015-06-12 08:21:22

标签: javascript regex

我想用\"\\"中的\")替换字符串中的所有<div style=\"font-size:0.9em\">

var str = '{"CarID":"Z100","alerts":[{"AlertType":"Head <b>southeast</b> on <b>Tân Hải</b> toward <b>Trường Chinh</b><div style=\"font-size:0.9em\">Pass by nhan cuoi dep (on the right)</div>"}],"customizedLocations":[]}';

str = str.replace(/\"/g, '\\\\"');

我希望输出为(\"中的style替换为\\"):

{"VehicleID":"Z100","alerts":[{"AlertType":"Head <b>southeast</b> on <b>Tân Hải</b> toward <b>Trường Chinh</b><div style=\\"font-size:0.9em\\">Pass by nhan cuoi dep (on the right)</div>"}],"customizedLocations":[]}

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

{\\"VehicleID\\":\\"Z100\\",\\"alerts\\":[{\\"AlertType\\":\\"Head <b>southeast</b> on <b>Tân Hải</b> toward <b>Trường Chinh</b><div style=\\"font-size:0.9em\\">Pass by nhan cuoi dep (on the right)</div>\\"}]}

我不想使用jQuery,有人可以帮帮我!

2 个答案:

答案 0 :(得分:2)

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

str = str.replace(/\\\"/g, '\\\\"');

这将产生希望的结果。

请阅读您问题下方的用户zerkms的评论。我真的不明白这个替换有什么好处。也许你有所谓的x-y问题: https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem

编辑:

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

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

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

答案 1 :(得分:0)

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

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