移动端开发经常遇到在搜索框输入文字查询数据,为提高易用性,需要匹配文字高亮显示,
一、不区分大小写
brightenKeyword(val, keyword) {
val = val + '';
if (val.indexOf(keyword) !== -1 && keyword !== '') {
return val.replace(keyword, '<font color="#248adf">' + keyword + '</font>')
} else {
return val;
}
},
同样有些情况需要做到,在搜索输入时是忽略字母大小写的情况,那么高亮显示也需要忽略大小写
二、应用正则表达式,区分大小写
brightenKeyword(val, keyword) {
var thizz = this
val = val + '';
const Reg = new RegExp(keyword, 'i')
if (val) {
// 这里为什么使用$&不使用keyword,因为这里使用正则表达式不区分大小写,如果是文本时大写,搜索的关键字是小写也是会被匹配的,这样匹配替换掉的话,文本内的文字会被替换成搜索的keyword,也就是改成了小写,这样不太合理
// const resCurrent = val.replace(Reg, `<span style="color: #000;background-color: orange;">${keyword}</span>`)
const resCurrent = val.replace(Reg, `<span style="color: #248adf;background-color: white;">$&</span>`)
return resCurrent
}
},