提问者:小点点

JavaScript RegExp:为什么会导致双反斜杠(\\)错误?[重复]


偶然发现了这一点,不知道原因是什么。

// Results in "Syntax error in regular Expression".
var re = RegExp('\\');

我知道构造函数需要一个字符串作为参数。并且反斜杠在字符串中用于转义具有特殊含义的字符。我知道我必须转义像\d到\\d这样的字符。

因此:正确的反斜杠应该被解释为一些正常字符。

相反,它会抛出一个错误。为什么?

有人能给我解释一下吗?


共3个答案

匿名用户

\用于在字符串中转义\,因此要按照您编写的方式获取\d,您需要执行\\d

同样在正则表达式中,您需要使用\\转义\

因此,您有两种转义语法需要在regexp中发生,使用单个\\将意味着regexp中的\这是不正确的,因为它需要转义。

因此,要解决这个问题,您需要双重转义:\\\-这将是一个查找\的正则表达式。

匿名用户

字符串文字'\\'创建一个只包含单个反斜杠字符的字符串,因为在字符串文字中反斜杠是转义字符。

单个反斜杠字符不是有效的正则表达式。

如果您想要匹配单个反斜杠的正则表达式,则需要在正则表达式中转义,因此您需要执行以下操作:

re = /\\/;
// or
re = new RegExp('\\\\');

匿名用户

我相信您收到此错误的原因是您输入JavaScript引擎的有效正则表达式是单个反斜杠\

这样做的原因是第一个反斜杠转义了第二个反斜杠。所以你输入了一个文字反斜杠,这没有任何意义。