以下代码按预期编写“响应”:
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);
语法。
答案 0 :(得分:2)
反斜杠在字符串中有特殊含义,它是转义字符。如果要从字符串创建正则表达式,则必须转义反斜杠。
如果转义的字符具有相同的含义,您将不会注意到它:
'\n'.match('\n');
'\n'.match('\\n');
两个都工作。但是,\b
在字符串中没有这样的含义
new RegExp("\bResponse");
变为/Response/
(\b
是退格符,不代表可见字符)。当转义没有特殊含义时,反斜杠就会被删除。