我一直在努力解决这个问题而没有任何运气。如果有人能指出我正确的方向,将不胜感激。
问题是RegExp对象完全忽略 \ b 和 \ s 元字符。
var orOperator = 'or';
var term = 'ipsum';
var str = 'lorem or ipsum or ipsumal';
var regex = new RegExp('(\\s)\\b' + orOperator + '\\s' + term + '\\b', 'gi');
console.log(regex);
str = str.replace(regex, '');
由此产生的正则表达式应该是
/(\s)\bor\sipsum\b/gi
我继续使用这一个(删除Metacharacters)并且我不知道为什么
/(s)orsipsum/gi
解决方案:
正如@Yizheng Shen所说,每个元字符的4个反斜杠就可以了。
var regex = new RegExp('(\\\\s)\\\\b' + orOperator + '\\\\s' + term + '\\\\b', 'gi');
我不知道为什么2个反斜杠不够。欢迎任何建议。 :)