我正在尝试进行Javascript替换(从字符串中删除一些单词),但我需要使用一个变量,所以我正在使用new RegExp()
,如下所示,但我无法弄清楚为什么正则表达式不替换单词。当我使用相同的正则表达式并且不使用new RegExp()
时,它可以正常工作。
var string = "foo bar foo bar";
// With RegExp
var replace = "foo";
var regex = new RegExp("\b" + replace + " \b|\b " + replace + "\b|^" + replace + "$", 'igm');
document.write(string.replace(regex, ""));
// Without RegExp
document.write('<br>');
document.write(string.replace(/\bfoo \b|\b foo\b|^foo$/igm, ''));
答案 0 :(得分:2)
您需要转义反斜杠:http://jsfiddle.net/HkEjB/1/
var string = "foo bar foo bar";
// With RegExp
var replace = "foo";
var regex = new RegExp("\\b" + replace + " \\b|\\b " + replace + "\\b|^" + replace + "$", 'igm');
document.write(string.replace(regex, ""));