对文章举行搜刮关键字过滤,并显现高亮的javascript完成要领之一

  1. 在不斟酌关键字是特别字符的情况下:
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(‘要检索的内容’,’检索的关键字’,’给内容中的关键字加上的有特别标记的标署名’)

2.假如关键字允许是特别字符的情况下,就要做区分处置惩罚,由于有些特别字符在正则中有特别寄义(比方:^\*+?等,详细可参考正则表达式手册):

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(‘要检索的内容’,’检索的关键字’,’给内容中的关键字加上的有特别标记的标署名’)。
本篇文章重要用来纪录事情项目中碰到的,本人以为有必要记下来的知识点,方便在今后碰到时能够直接运用,也给碰到一样题目的其他人供应一个思绪。

    原文作者:采蘑菇的小姑娘
    原文地址: https://segmentfault.com/a/1190000017433594
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞