用变量储存正则表达式

522 阅读1分钟

项目涉及到一个搜索的功能,模糊搜索到的文本数据,需要对搜索关键字进行高亮显示,类似与百度

首先想到的就是 stringObject.replace 方法,替换文本数据中的关键字,转为<em>之类的,replace需要一个正则表达式,这里肯定的正则肯定是搜索的值

// val 为搜索的值
let reg = `/${val}/`
// res 为搜索获取到的内容
res.text = res.text.replace(reg, `<em>${val}</em>`);

发现没有作用,因为reg被转为字符串了

解决方法

  • eval
使用eval将组合的字符串进行转换
res.text = res.text.replace(eval(reg), `<em>${val}</em>`);
  • RegExp
let reg = new RegExp(`/${val}/`)