所以我有这个代码,我想用2个反斜杠替换所有单个反斜杠,例如:\ --->我尝试通过以下代码执行此操作:
string = string.replace(new RegExp("\\", "g"), "\\\\");
但显然这不起作用,因为我收到以下错误:
Uncaught SyntaxError:无效的正则表达式://:\ at pattern of pattern
知道为什么吗?
答案 0 :(得分:8)
\
是正则表达式的转义字符,也是javascript字符串的转义字符。这意味着javascript字符串"\\"
将生成以下内容:\
。但是单个\
是正则表达式的转义字符,当正则表达式编译器找到它时,他认为:“很好,我必须逃避下一个字符”......但是,没有下一个字符。所以正确的正则表达式模式应该是\\
。当在javascript脚本中转义时,"\\\\"
。
所以你应该使用:
string = string.replace(new RegExp("\\\\", "g"), "\\\\");
作为替代方案,并且为了避免javascript字符串转义,您可以使用文字正则表达式:
string = string.replace(/\\/g, "\\\\");
答案 1 :(得分:1)
你为JavaScript的字符串文字目的逃脱了反斜杠,但你没有为正则表达式引擎的目的而逃避它。请记住,您正在处理技术层次。
所以:
string = string.replace(new RegExp("\\\\", "g"), "\\\\");
或者更好:
string = string.replace(/\\/g, "\\\\");