字符串中的Javascript转义反斜杠

字符串中的Javascript转义反斜杠,javascript,Javascript,我尝试在chrome控制台中运行以下代码 var line = "RewriteRule ^research/research\-facilities/library\.html$ http://test.com [R=301,L]"; var tmp = line.replace(/\\/g, "\\"); console.log(tmp); 输出为: RewriteRule ^research/research-facilities/library.html$ http://test.

我尝试在chrome控制台中运行以下代码

var line = "RewriteRule ^research/research\-facilities/library\.html$ http://test.com [R=301,L]";

var tmp = line.replace(/\\/g, "\\");

console.log(tmp);
输出为:

RewriteRule ^research/research-facilities/library.html$ http://test.com [R=301,L]
我需要的输出是:

RewriteRule ^research/research\\-facilities/library\\.html$ http://test.com [R=301,L]

有人知道如何解决吗?

您遇到的问题是:

"RewriteRule ^research/research\-facilities/library\.html$ http://test.com [R=301,L]"
具有以下值:

RewriteRule ^research/research-facilities/library.html$ http://test.com [R=301,L]
字符串中的反斜杠字符转义下一个字符。对于具有附加含义的字符,它们表示其他字符,例如表示换行符的
“\n”
。对于任何其他字符,将删除转义字符

这意味着
'\-'
的值为
'-'
'\.
的值为
'.

如果希望字符串包含正确的转义字符,则需要以这种方式编写

如果希望字符串的值为:

RewriteRule ^research/research\-facilities/library\.html$ http://test.com [R=301,L]
原始字符串应为:

"RewriteRule ^research/research\\-facilities/library\\.html$ http://test.com [R=301,L]"

它不应该是
行。替换(/\\/g,\\\\”
?也就是说,如果我把var tmp=line替换为双反斜杠?替换(/\\\/g,“?”);它仍然不起作用。问题是/\\/g
变量中包含的值不包含任何反斜杠字符。@zzzzBov,这意味着我需要转义“转义”字符,但不确定如何转义to@kenpeter你不能。至少以后不会。反斜杠字符已用于转义原始字符串中的字符。例如,
“\-”.length==1
我正在从一个大文件中逐行读取。每一行类似于重写规则^research/research \-facilities/library\.html$[R=301,L]。我需要手动放置“\\”吗?@kenpeter,读取文件时,变量将包含该值。使用转义是为了在硬编码字符串时指定正确的值。基于此,没有优雅的方法可以转义字符串中的反斜杠,对吗?@kenpeter,我想你误解了这个问题。替换字符串值中的反斜杠很简单。
str.replace(/\\/g,replacement)
就是全部。问题是当有人试图用字符串构建JavaScript时——这是一个糟糕的想法——在用引号将其包装之前未能正确地转义该值。@kenpeter,在注释中重复你的问题不会有任何效果。首先,通过编辑您的问题,详细说明您正试图解决的确切问题。包括详细信息,如您拥有的文件,以及您认为需要如何更改这些文件。