gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 03:12:24 26 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/17863066/

26 4 0
文章推荐: javascript 对象最大大小限制
文章推荐: git - Go 项目中的微服务和 monolit git 存储库
文章推荐: Golang GRPC 返回 EOF 错误
文章推荐: javascript - 未捕获的类型错误 : Object # has no method 'movingBoxes'