有很多jQuery插件可以实现文本高亮,这里使用一个简单的方法,实现高亮,不需要其他JavaScript包,只是纯净的JavaScript,这个脚本返回被处理的原始数据,高亮的文本用标签包含起来,可以使用css定义样式。
function highlight(text, words, tag) { // 默认的标签,如果没有指定,使用span tag = tag || 'span'; var i, len = words.length, re; for (i = 0; i < len; i++) { // 正则匹配所有的文本 re = new RegExp(words[i], 'g'); if (re.test(text)) { text = text.replace(re, '<'+ tag +' class="highlight">$&</'+ tag +'>'); } } return text; }
将高亮文本还原
function unhighlight(text, tag) { // 默认的标签,如果没有指定,使用span tag = tag || 'span'; var re = new RegExp('(<'+ tag +'.+?>|<\/'+ tag +'>)', 'g'); return text.replace(re, ''); }
使用方法:
$('p').html( highlight( $('p').html(), //替换的文本 ['foo', 'bar', 'baz', 'hello world'], //高亮的文本数组 'strong' //自定义标签 ));