js包装不区分大小写的关键字

时间:2017-08-21 11:44:54

标签: javascript regex

我正在实施代码hightlight包。 当用户输入关键字(不区分大小写)时,我将用链接替换关键字。

例如,

var keyword = 'from';
var keyReg = new RegExp(keyword, 'ig');
hightlight('select * from xxx; select * FROM yyy;'); // "select * <a>from</a> xxx; select * <a>FROM</a> yyy;"

我怎么能这样做?

- 更新---

实际上,我不只是突出显示关键字,而是需要添加关键字的链接。

1 个答案:

答案 0 :(得分:2)

您可以使用字符串replace方法传递第二个参数:replacer function。有关替换的更多信息,请阅读here

更新:在字边界添加\ b断言位置。

&#13;
&#13;
var keyword = 'from';
var keyReg = new RegExp("\\b" + keyword + "\\b", 'ig');

function hightlight(str) {
  return str.replace(keyReg, function replacer(match) {
    return '<span class="highlight">' + match + '</span>';
  });
}

console.log(hightlight('select * from xxx')); // "select * <span class="hightlight">from</span> xxx"
console.log(hightlight('select * FROM xxx')); // "select * <span class="hightlight">FROM</span> xxx"
console.log(hightlight('select * from fromages')); // "select * <span class="highlight">from</span> fromages"
&#13;
&#13;
&#13;