Javascript取代未转义的斜杠

时间:2012-05-25 06:22:02

标签: 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")的输出。

我应该做什么?

2 个答案:

答案 0 :(得分:6)

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

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

结束与:

相同
"contenthsgjhome.css"

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

(注意,如果你已经转义了像"\\"这样的字符串文字中的反斜杠,它只是文字语法的一部分,一旦解释,结果字符串只有一个反斜杠{{1 }}。)

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

答案 1 :(得分:0)

yourstring.split(String.fromCharCode(92)).join('/')