1

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

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);语法。

4

1 回答 1

2

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

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

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

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

于 2012-07-01T12:25:34.417 回答