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").
我该做什么?
它返回的原因是"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代码中进行转义.