JavaScript RegExp:为什么导致双反斜杠(\\)出错?

时间:2016-07-05 06:30:59

标签: javascript regex

偶然发现了这个,并且不知道原因是什么。

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

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

这样的字符

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

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

任何人都可以向我解释这个吗?

4 个答案:

答案 0 :(得分:3)

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

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

如果你想要一个匹配的正则表达式一个反斜杠,那么需要在正则表达式中进行转义,所以你需要这样做:

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

答案 1 :(得分:2)

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

原因是第一个反斜杠转义第二个反斜杠。所以你要加上一个字面上的反斜杠,这没有任何意义。

答案 2 :(得分:1)

\用于在字符串中转义\,因此要在撰写时\d获取\\d,需要执行\

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

因此,您需要在regexp中使用两个转义语法,在regexp中使用单个\将表示\\\\这是不正确的,因为它需要进行转义。

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

答案 3 :(得分:0)

反斜杠\是正则表达式的转义字符。因此,双反斜杠确实意味着单个字面反斜杠。 \(反斜杠)后跟任何[\ ^ $。 ?* +(){}转义特殊字符以抑制其特殊含义。