偶然发现了这个,并且不知道原因是什么。
// Results in "Syntax error in regular Expression".
var re = RegExp('\\');
我知道构造函数需要一个字符串作为参数。并且在字符串中使用反斜杠来转义具有特殊含义的字符。我知道我必须转义像\ d到\\ d。
这样的字符因此:正确的反斜杠应该被解释为一些正常的字符。
相反,它会抛出错误。为什么呢?
任何人都可以向我解释这个吗?
答案 0 :(得分:3)
字符串文字'\\'
创建一个只包含单个反斜杠字符的字符串,因为在字符串文字中反斜杠是一个转义字符。
单个反斜杠字符不是有效的正则表达式。
如果你想要一个匹配的正则表达式一个反斜杠,那么需要在正则表达式中进行转义,所以你需要这样做:
re = /\\/;
// or
re = new RegExp('\\\\');
答案 1 :(得分:2)
我相信您收到此错误的原因是您加入JavaScript引擎的有效正则表达式是一个反斜杠\
。
原因是第一个反斜杠转义第二个反斜杠。所以你要加上一个字面上的反斜杠,这没有任何意义。
答案 2 :(得分:1)
\
用于在字符串中转义\
,因此要在撰写时\d
获取\\d
,需要执行\
。
同样在正则表达式中,您需要使用\\
转义\\
。
因此,您需要在regexp中使用两个转义语法,在regexp中使用单个\
将表示\\\\
这是不正确的,因为它需要进行转义。
因此要解决此问题,您需要双重转义:\
- 这将是一个正在寻找GetCell
的正则表达式。
答案 3 :(得分:0)
反斜杠\是正则表达式的转义字符。因此,双反斜杠确实意味着单个字面反斜杠。 \(反斜杠)后跟任何[\ ^ $。 ?* +(){}转义特殊字符以抑制其特殊含义。