我用魔杖突出用于进行研究的词。我试图在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.
答案 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>");