项目涉及到一个搜索的功能,模糊搜索到的文本数据,需要对搜索关键字进行高亮显示,类似与百度
首先想到的就是 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}/`)