JS實(shí)現(xiàn)關(guān)鍵詞高亮顯示正則匹配
html 和ajax 部分就不寫了,只需將需要匹配的文字傳進(jìn)去就可以了
比如匹配后臺(tái)傳回的字符串data.content
中的關(guān)鍵詞:直接調(diào)用:
data.content = highLightKeywords(data.content,keywords)
即可
以下兩個(gè)函數(shù)分辨是匹配1:匹配關(guān)鍵詞words中每一個(gè)字符,2:匹配整個(gè)關(guān)鍵詞words
//高亮關(guān)鍵字 text =>內(nèi)容 words:關(guān)鍵詞 tag 被包裹的標(biāo)簽 //匹配每一個(gè)關(guān)鍵字字符 function highLightKeywords(text, words, tag) { tag = tag || 'span';// 默認(rèn)的標(biāo)簽,如果沒有指定,使用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; }
//匹配整個(gè)關(guān)鍵詞 不拆分 function highlight(text, words, tag) { // 默認(rèn)的標(biāo)簽,如果沒有指定,使用span tag = tag || 'span'; var i, len = words.length, re; //匹配每一個(gè)特殊字符 ,進(jìn)行轉(zhuǎn)義 var specialStr = ["*", ".", "?", "+", "$", "^", "[", "]", "{", "}", "|", "\\", "(", ")", "/", "%"]; $.each(specialStr, function(i, item) { if(words.indexOf(item) != -1) { words = words.replace(new RegExp("\\" + item, 'g'), "\\" + item); } }); //匹配整個(gè)關(guān)鍵詞 re = new RegExp(words, 'g'); if(re.test(text)) { text = text.replace(re, '<' + tag + ' class="highlight">$&</' + tag + '>'); } return text; }
總結(jié)
以上所述是小編給大家介紹的JS實(shí)現(xiàn)關(guān)鍵詞高亮顯示正則匹配,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
ES6新數(shù)據(jù)結(jié)構(gòu)Set與WeakSet用法分析
這篇文章主要介紹了ES6新數(shù)據(jù)結(jié)構(gòu)Set與WeakSet用法,結(jié)合實(shí)例形式簡(jiǎn)單分析了Set與WeakSet的功能、使用方法及相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-03-03js 創(chuàng)建一個(gè)浮動(dòng)div的代碼
js 創(chuàng)建一個(gè)浮動(dòng)div的代碼,一般用來指導(dǎo)用戶下面的操作與多條件選擇。點(diǎn)擊一下就可顯示,具體的大家可以自由發(fā)揮。2009-12-12基于iscroll.js實(shí)現(xiàn)下拉刷新和上拉加載效果
這篇文章主要為大家詳細(xì)介紹了基于iscroll.js實(shí)現(xiàn)下拉刷新和上拉加載效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11Web層改進(jìn)II-用xmlhttp 無聲息提交復(fù)雜表單
Web層改進(jìn)II-用xmlhttp 無聲息提交復(fù)雜表單...2007-01-01JS實(shí)現(xiàn)“全選”和"全不選"功能代碼實(shí)例
這篇文章主要介紹了JS實(shí)現(xiàn)“全選”和"全不選"功能代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02JS中call和apply函數(shù)用法實(shí)例分析
這篇文章主要介紹了JS中call和apply函數(shù)用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了call和apply函數(shù)繼承功能的使用方法、區(qū)別及操作注意事項(xiàng),需要的朋友可以參考下2018-06-06JavaScript實(shí)現(xiàn)隨機(jī)碼的生成與校驗(yàn)
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)隨機(jī)碼的生成與校驗(yàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-04