Javascript取代未转义的斜杠

iNc*_*ing 0 javascript regex replace node.js

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

"\content\hs\gj\home.css".replace(/\\/gi,"/")
Run Code Online (Sandbox Code Playgroud)

返回"contenthsgjhome.css".我明白如果改成它

"\\content\\hs\\gj\\home.css".replace(/\\/gi,"/")`
Run Code Online (Sandbox Code Playgroud)

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

我该做什么?

nnn*_*nnn 6

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

"\content\hs\gj\home.css"
Run Code Online (Sandbox Code Playgroud)

结尾如下:

"contenthsgjhome.css"
Run Code Online (Sandbox Code Playgroud)

所以没有反斜杠可供.replace()查找.

(注意,如果你确实在字符串文字中有转义反斜杠,"\\"那只是文字语法的一部分,一旦解释,结果字符串只有一个反斜杠"\".)

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