正则表达式突出显示文本中的单词

时间:2013-09-26 17:35:44

标签: javascript regex

我用魔杖突出用于进行研究的词。我试图在JavaScript中使用正则表达式,但我得到以下问题。

这是我正在使用的代码:

var key_word = "and"; 
var text= "I bought milk and water"; 
var re = new RegExp("(" + key_word + ")", 'ig'); 
text = text.replace(re, "<strong>$1</strong>"); 
console.log(text);

正确的结果:

I bought milk <strong>and</strong> water. 

但是有了文字

var text = "I am getting a better understanding.";

错误的结果:

I am getting a better underst<strong>and</strong>ing.

1 个答案:

答案 0 :(得分:5)

您需要使用字边界:

var re = new RegExp("\\b(" + key_word + ")\\b", 'ig'); 

使用字词边界 - \b将确保关键字仅在其前后跟非字字符时匹配。

注意,在使用RegExp构造函数时,您需要转义反斜杠。因此,它应该是\\b,因为\本身就是字符串文字中的转义字符。


或者,您可以使用正则表达式文字:

var re = /\b(and)\b/ig;
text = text.replace(re, "<strong>$1</strong>");