JavaScript为什么正则表达式构造函数需要双重转义?
在下面的正则表达式中,\s
表示空格字符。我想象正则表达式解析器正在遍历字符串,\
并且知道并知道下一个字符是特殊的。
但这不是事实,因为需要两次转义。
为什么是这样?
var res = new RegExp('(\\s|^)' + foo).test(moo);
有没有具体的例子说明如何将一次逃生误解为其他?
回答:
您正在通过将字符串传递给RegExp构造函数来构造正则表达式。
\
是字符串文字中的转义字符。
该\
由字符串字面解析消耗…
const foo = "foo";const string = '(\s|^)' + foo;
console.log(string);
…因此,传递给RegEx编译器的数据是普通数据,s
而不是普通数据\s
。
您需要转义\
以将\
as 表示为数据,而不是本身是转义字符。
以上是 JavaScript为什么正则表达式构造函数需要双重转义? 的全部内容, 来源链接: utcz.com/qa/412658.html