gpt4 book ai didi

javascript - 为什么正则表达式构造函数需要双重转义?

转载 作者:行者123 更新时间:2023-11-28 04:47:30 25 4
gpt4 key购买 nike

在下面的正则表达式中,\s 表示空格字符。我想象正则表达式解析器正在遍历字符串并看到 \ 并知道下一个字符是特殊的。

但情况并非如此,因为需要双重转义。

这是为什么?

var res = new RegExp('(\\s|^)' + foo).test(moo);

有没有具体的例子来说明一次转义如何被误解为其他东西?

最佳答案

您通过将字符串传递给 RegExp 构造函数来构造正则表达式。

\ 是字符串文字中的转义字符。

\ 由字符串文字解析消耗...

const foo = "foo";
const string = '(\s|^)' + foo;
console.log(string);

...因此您传递给 RegEx 编译器的数据是普通的 s 而不是 \s

您需要对 \ 进行转义,以将 \ 表示为数据,而不是转义字符本身。

关于javascript - 为什么正则表达式构造函数需要双重转义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43230671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com