正则表达式以高亮显示文本中的单词

Giu*_*Pes 0 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);
Run Code Online (Sandbox Code Playgroud)

正确的结果:

I bought milk <strong>and</strong> water. 
Run Code Online (Sandbox Code Playgroud)

但随着文字

var text = "I am getting a better understanding.";
Run Code Online (Sandbox Code Playgroud)

错误的结果:

I am getting a better underst<strong>and</strong>ing.
Run Code Online (Sandbox Code Playgroud)

Roh*_*ain 5

你需要使用单词边界:

var re = new RegExp("\\b(" + key_word + ")\\b", 'ig'); 
Run Code Online (Sandbox Code Playgroud)

使用单词边界 - \b将确保仅在关键字前面和后面跟着非单词字符时才匹配.

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


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

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