是偶然发现的,不知道原因是什么。
// Results in "Syntax error in regular Expression".
var re = RegExp('\\');
我知道构造函数需要一个字符串作为参数。反斜杠在字符串中用于转义具有特殊意义的字符。我知道我必须把像\d这样的角色转义到\d。
因此:右反斜杠应该解释为一些正常的字符。
相反,它会引发一个错误。为什么?
有人能给我解释一下吗?
发布于 2016-07-04 22:33:12
我相信您得到此错误的原因是,您要输入到JavaScript引擎中的有效正则表达式是一个反斜杠\
。
原因是第一个反斜杠逃脱了第二个反斜杠。所以你要放一个字面上的反斜杠,这没有任何意义。
发布于 2016-07-04 22:33:28
\
用于在字符串中转义\
,因此要像您所写的那样获得\d
,您需要执行\\d
。
同样,在regexp中,您需要用\\
来转义\\
。
因此,需要在regexp中进行两个转义语法,使用单个\\
将意味着regexp中的\
不正确,因为它需要转义。
因此,要解决这个问题,您需要双重转义:\\\\
-这将是一个寻找\
的正则表达式。
发布于 2016-07-04 22:33:04
字符串文本'\\'
只包含一个反斜杠字符,因为在字符串文本中反斜杠是转义字符。
一个反斜杠字符不是一个有效的正则表达式。
如果您想要一个与单个反斜杠匹配的regex,那么需要在regex中转义,所以您需要这样做:
re = /\\/;
// or
re = new RegExp('\\\\');
https://stackoverflow.com/questions/38196609
复制