正则踩坑
需求:精准高亮过程中,输入横线关键词,前端报错
export default {
/**
* @description 模糊匹配,只要存在就会高亮
*/
hLightSingle(keyword,target) {
const reg1 = new RegExp("-", "gi");
const keywords = keyword.replace(reg1, "\\-")
const reg = new RegExp("[" + keywords + "]", "gi");
// 对原数据 suggestions中的每一项都做正则匹配,得到高亮之后的字符串
const hLight = target.replace(
reg,
(val) => `<span style="color:#FF9900">${val}</span>`
)
return hLight
},
/**
* @description 精准匹配,才会高亮
*/
hLightAll(keyword,target) {
const reg1 = new RegExp("-", "gi");
const keywords = keyword.replace(reg1, "\\-")
const reg = new RegExp(keywords, "gi");
// 对原数据 suggestions中的每一项都做正则匹配,得到高亮之后的字符串
const hLight = target.replace(
reg,
(val) => `<span style="color:#FF9900">${val}</span>`
)
return hLight
},
}
解决方案(横杠转义,替换)
const reg1 = new RegExp("-", "gi");
const keywords = keyword.replace(reg1, "\\-")