gpt4 book ai didi

javascript - RegExp 中的模式变量不适用于说明符

转载 作者:行者123 更新时间:2023-11-30 18:24:23 25 4
gpt4 key购买 nike

以下代码按预期写入“response”:

var str = "Would you like to have responses";
var pattern = "Response";
document.write(str.match(new RegExp(pattern,'gi')));

但是当我添加像 \b 这样的说明符时,下面会写成“null”:

var str = "Would you like to have responses";
var pattern = "\bResponse";
document.write(str.match(new RegExp(pattern,'gi')));

我怎样才能让它发挥作用?


有趣的是,以下两个作品

document.write(str.match(new RegExp(/Response/gi)));
document.write(str.match(new RegExp(/\bResponse/gi)));

但我想使用 new RegExp(pattern,modifiers); 语法。

最佳答案

反斜杠在字符串中有特殊的含义,它是转义字符。当您想从字符串创建正则表达式时,必须对反斜杠进行转义。

在转义字符具有相同含义的情况下,您不会注意到它:

 '\n'.match('\n');
'\n'.match('\\n');

两者都有效。但是,\b在字符串中没有这样的含义。
new RegExp("\bResponse");变为/Response/(\b为退格字符,不代表可见字符) .当转义符没有特殊含义时,反斜杠将被删除。

关于javascript - RegExp 中的模式变量不适用于说明符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11281918/

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