Javascript 替换未转义的斜杠

标签 javascript regex node.js replace

我想用反斜杠替换字符串中的未转义斜杠。但奇怪的事情发生了:

"\content\hs\gj\home.css".replace(/\\/gi,"/")

返回“contenthsgjhome.css”。我明白如果将其更改为

"\\content\\hs\\gj\\home.css".replace(/\\/gi,"/")`

然后它将按预期工作,但我无法更改字符串,因为它只是 nodejs path.join("conetnt", "hs", "gj", "home.css") 的输出

我应该做什么?

最佳答案

它返回 "contenthsgjhome.css" 的原因是您的字符串中根本没有任何反斜杠,因为字符串文字中的单个反斜杠将被忽略,除非它们可以转义后面的字符(例如 "\\""\n")。 "\c" 作为转义符没有特殊含义,因此它被解释为 "c"

"\content\hs\gj\home.css"

最终结果相同:

"contenthsgjhome.css"

因此 .replace() 找不到反斜杠。

(请注意,如果您确实在像 "\\" 这样的字符串文字中转义了反斜杠,它只是文字语法的一部分,并且一旦解释,结果字符串就只有一个反斜杠 "\"。)

也许如果你能解释一下“这只是 FS 的输出”的意思,有人可以提供更多建议。这是 JSP/ASP/PHP/etc 输出 JS 代码时的常见问题 - 在 JS 解释器看到它之前,需要在 JSP/ASP/PHP/etc 代码中进行转义。

关于Javascript 替换未转义的斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10749461/

相关文章:

javascript - 是否有可能将 "setInterval"设置得太快?

r - 我能合理拆分这些数字串吗?

regex - Xml 模式正则表达式不允许单独使用空格

Javascript/jQuery 从字符串中获取前 100 个字符,尊重完整的单词

javascript - 如何使用 javascript 最有效地从该 html 字符串中提取内容? (最高性能 = 最低毫秒)

javascript - 使用椭圆曲线 key 的 Node.js HTTPS 请求

javascript - raphael.js 中的 z-index 分层

Node.js 标准输出刷新

javascript - Android 上的 GroPro 实时预览

node.js - 当前端和后端位于不同端口时如何使 DocuSign 嵌入式签名正常工作