warpTag (content, keyword, tagName) { if (content === 'No results') { return content } const a = content.toLowerCase() const b = keyword.toLowerCase() const indexof = a.indexOf(b) const c = indexof > -1 ? content.substr(a.indexOf(b), keyword.length) : '' const val = `<${tagName}>${c}</${tagName}>` const regS = new RegExp(keyword, 'gi') return content.replace(regS, val) }
調用的時候warpTag('要檢索的內容','檢索的關鍵字','給內容中的關鍵字加上的有特殊標記的標籤名')html
2.若是關鍵字容許是特殊字符的狀況下,就要作區別處理,由於有些特殊字符在正則中有特殊含義(例如:^\*+?等,具體可參考正則表達式手冊):jquery
warpTag (content, keyword, tagName) { if (content === '') { return content } const a = content.toLowerCase() const b = keyword.toLowerCase() const indexof = a.indexOf(b) const c = indexof > -1 ? content.substr(a.indexOf(b), keyword.length) : '' const val = `<${tagName} class='keywords'>${c}</${tagName}>` let characterReg = /^.*[\\!~@#$%^&*(_)+\-=`,./<>?;':"|[\]{}].*$/ let regS if (characterReg.test(keyword)) { if (keyword.length === 1) { regS = new RegExp('\\' + keyword, 'gi') } else { let keywordNew = '' for (let i = 0; i < keyword.length; i++) { keywordNew += i < keyword.length - 1 ? keyword.substr(i, 1) + '\\' : keyword.substr(i, 1) } keyword = keywordNew } regS = new RegExp('\\' + keyword, 'gi') } else { regS = new RegExp(keyword, 'gi') } return content.replace(regS, val) }
使用方法同上:warpTag('要檢索的內容','檢索的關鍵字','給內容中的關鍵字加上的有特殊標記的標籤名')。
本篇文章主要用來記載工做項目中遇到的,本人以爲有必要記下來的知識點,方便在之後遇到時能夠直接使用,也給遇到一樣問題的其餘人提供一個思路。正則表達式