在下面的正则表达式中,\s
表示空格字符。我想象正则表达式解析器正在遍历字符串并看到\
并且知道下一个字符是特殊的。
但情况并非如此,因为需要双重转义。
为什么是这样?
var res = new RegExp('(\\s|^)' + foo).test(moo);
有没有具体的例子来说明一次逃脱如何被误解为其他事情?
您通过将字符串传递给 RegExp 构造函数来构造正则表达式。
\
是字符串文字中的转义字符。
The \
由字符串文字解析消耗......
const foo = "foo";
const string = '(\s|^)' + foo;
console.log(string);
…所以您传递给 RegEx 编译器的数据是一个简单的数据s
并不是\s
.
你需要逃离\
来表达\
作为数据而不是转义字符本身。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)