const highLight = (text, keyword) => {
const len = keyword.length;
let correctText = keyword;
const specialStr = ['*', '.', '?', '+', '$', '^', '[', ']', '{', '}', '|', '\\', '(', ')', '/', '%'];
let newText = '';
if (len !== 0) {
let index = 0;
specialStr.map(item => {
if (correctText.includes(item)) {
correctText = correctText.replace(new RegExp(`\\${item}`, 'g'), `a1s2d3${item}`);
}
});
correctText = correctText.replace(new RegExp('a1s2d3', 'g'), `\\`);
const matchData = new RegExp(correctText, 'i').exec(text);
if (matchData) {
index = matchData.index;
newText += text.slice(0, index);
newText += `<span class="highlight" style='color: #F94E22;'>${text.slice(index, index + len)}</span>`;
if (text.slice(index + len).length > 0) {
newText += highLight(text.slice(index + len), keyword);
}
} else {
newText += text;
}
} else {
newText = text;
}
newText = newText.replace(/%5f/g, '_');
newText = newText.replace(/%27/g, "'");
return newText;
};
export default highLight;
// 在jsx文件内使用(highLight('使用highLight高亮搜索的内容', 'highLight'); highLight会高亮)
<span dangerouslySetInnerHTML={{__html: highLight('使用highLight高亮搜索的内容', 'highLight')}}></span>
前端:自定义关键词高亮显示
于 2022-09-08 16:50:21 首次发布