0

我想强调用于进行研究的词。我正在尝试在 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.
4

1 回答 1

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>"); 
于 2013-09-26T17:36:48.917 回答