如何在 JavaScript 中转义反斜杠?
Posted
技术标签:
【中文标题】如何在 JavaScript 中转义反斜杠?【英文标题】:How to escape backslash in JavaScript? 【发布时间】:2012-10-03 16:55:59 【问题描述】:我想用安全的\
替换反斜杠 => '\'。
但我的代码在申请替换“\”时替换所有“#”失败:
el = el.replace(/\#/g, '#'); // replaces all '#' //that's cool
el = el.replace(/\\/g, '\'); // replaces all '\' //that's failing
为什么?
【问题讨论】:
您发布的代码运行良好。你确定el
包含'\'
字符吗?
你能给我们一个失败的测试用例吗,在一个简单的测试用例上似乎对我有用。
嗯看看:pastebin.com/t27vmCzs
在该脚本中,您已经使用了 encodeURIComponent(),它将任何反斜杠替换为 %5C。我认为你不需要这两个手动替换。
仅供参考 #
不需要转义; el.replace(/#/g, '#')
应该可以工作。而且您替换反斜杠的代码在这里也可以正常工作。
【参考方案1】:
打开控制台并输入
'\'.replace(/\\/g, '\');
失败,因为字符串中的斜杠实际上不在字符串中,它正在转义 '
'\\'.replace(/\\/g, '\');
有效,因为它需要一个斜线并找到它。
您的正则表达式有效。
【讨论】:
那么你如何处理“域\用户”呢?您必须首先将单个反斜杠替换为双倍,然后使用 .replace(/\\/g, '\'); ?/\\/g
查找单个反斜杠。我们绝不会用双打取代单打。第一个反斜杠转义了第二个反斜杠,因此这个正则表达式在全局范围内查找单个反斜杠。要处理“域\用户”,/\\/g
应该可以正常工作。【参考方案2】:
您可以使用String.raw 在字符串文字中方便地添加斜杠。例如。 String.raw`\a\bcd\e`.replace(/\\/g, '\');
【讨论】:
以上是关于如何在 JavaScript 中转义反斜杠?的主要内容,如果未能解决你的问题,请参考以下文章