搜索關(guān)鍵詞,支持大小寫(xiě)匹配

最近項(xiàng)目遇到一個(gè)問(wèn)題,要求搜索關(guān)鍵詞,支持大小寫(xiě)匹配,搜索了很多百度文章都是正則replace,但是都會(huì)有一個(gè)問(wèn)題 替換的標(biāo)簽也會(huì)被匹配到。查閱資料,發(fā)現(xiàn)正則分組是個(gè)好東西,感興趣可以自行搜索正則分組http://www.itdecent.cn/p/2b1557f60967(正則分組匹配介紹),搜索關(guān)鍵詞高亮方法直接上代碼

支持多字符空格匹配

highlights(list, str) {

? ? ? ? str = str + ''

? ? ? ? //將str代碼支離為HTML片段和文字片段,其中文字片段用于正則替換處理,而HTML片段置之不理

? ? ? ? var tags = /[^<>]+|<(\/?)([A-Za-z]+)([^<>]*)>/g;

? ? ? ? var a = str.match(tags);

? ? ? ? if (a) {

? ? ? ? ? ? list.map((searchText)=>{

? ? ? ? ? ? ? ? if(searchText.lightinput !== "" && searchText.lightinput) {

? ? ? ? ? ? ? ? ? ? for (let i = 0; i < a.length; i++) {

? ? ? ? ? ? ? ? ? ? ? ? var content = a[i];

? ? ? ? ? ? ? ? ? ? ? ? if (!/<(?:.|\s)*?>/.test(content)) { //非標(biāo)簽

? ? ? ? ? ? ? ? ? ? ? ? ? ? // foreach search keyword.

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? var keyWords = searchText.lightinput.trim().split(" ");//關(guān)鍵字去空格變成數(shù)組

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? for (let k = 0; k < keyWords.length; k++) {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 匹配關(guān)鍵字正則

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? let replaceReg = new RegExp("("+keyWords[k]+")", "gmi");

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? content = content.replace(replaceReg,"♂"+k+"$1♀");

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? content = content.replace(/♂(\d)/g,`<mark style="background: ${searchText.color}">`).replace(/♀/ig,"</mark>");

? ? ? ? ? ? ? ? ? ? ? ? a[i] = content;

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? }

? ? ? ? ? ? })

? ? ? ? ? ? return a.join("");

? ? ? ? }

? ? ? ? return str;

? ? },

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容