偶然发现了这一点,不知道原因是什么。
// Results in "Syntax error in regular Expression".
var re = RegExp('\\');
我知道构造函数需要一个字符串作为参数。并且反斜杠在字符串中用于转义具有特殊含义的字符。我知道我必须转义像\d到\\d这样的字符。
因此:正确的反斜杠应该被解释为一些正常字符。
相反,它会抛出一个错误。为什么?
有人能给我解释一下吗?
\
用于在字符串中转义\
,因此要按照您编写的方式获取\d
,您需要执行\\d
。
同样在正则表达式中,您需要使用\\
转义\
。
因此,您有两种转义语法需要在regexp中发生,使用单个\\
将意味着regexp中的\
这是不正确的,因为它需要转义。
因此,要解决这个问题,您需要双重转义:\\\
-这将是一个查找\
的正则表达式。
字符串文字'\\'
创建一个只包含单个反斜杠字符的字符串,因为在字符串文字中反斜杠是转义字符。
单个反斜杠字符不是有效的正则表达式。
如果您想要匹配单个反斜杠的正则表达式,则需要在正则表达式中转义,因此您需要执行以下操作:
re = /\\/;
// or
re = new RegExp('\\\\');
我相信您收到此错误的原因是您输入JavaScript引擎的有效正则表达式是单个反斜杠\
。
这样做的原因是第一个反斜杠转义了第二个反斜杠。所以你输入了一个文字反斜杠,这没有任何意义。