如何在 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 中转义反斜杠?的主要内容,如果未能解决你的问题,请参考以下文章

如何在VIM findsearch中转义反斜杠和正斜杠?[重复]

在选择器中转义反斜杠

我需要在配置文件中转义反斜杠吗?

在 shell 中的双引号字符串中转义反引号

PHP基础

在正则表达式中转义正斜杠