在Javascript中,我正在尝试编写一个正则表达式,它将匹配变量中包含的单词,但仅限于单词是整个单词时。我想通过使用单词边界来实现这一点,如下所示:
var data = 'In this example of data, word has to be replaced by suggestion, but newword must not be replaced';
var item = {word: 'exampleWord', suggestion: 'suggestion'}
var word = "\b"+item.word+"\b";
var suggestion = item.suggestion;
var re = new RegExp(word, "gi");
data = data.replace(re, suggestion);
但是,以这种方式构造正则表达式显然不起作用。任何人都可以建议一种方法来构造包含变量和单词边界的正则表达式吗?
答案 0 :(得分:4)
您应该使用双重转义\\b
:
var word = "\\b"+item.word+"\\b";
如果您的item.word
可能包含特殊字符,请使用RegExp.escape功能。
var word = "PRICE: $56.23"
RegExp.escape= function(s) {
return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
};
alert("\\b"+RegExp.escape(word)+"\\b");