我想用\"
(\\"
中的\"
)替换字符串中的所有<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,有人可以帮帮我!
答案 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