获取"错误:正则表达式无效"

时间:2015-08-04 16:27:17

标签: javascript regex

所以我有这个代码,我想用2个反斜杠替换所有单个反斜杠,例如:\ --->我尝试通过以下代码执行此操作:

string = string.replace(new RegExp("\\", "g"), "\\\\");

但显然这不起作用,因为我收到以下错误:

  

Uncaught SyntaxError:无效的正则表达式://:\ at pattern of pattern

知道为什么吗?

2 个答案:

答案 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, "\\\\");