资讯专栏INFORMATION COLUMN

正则:高亮多个相似关键词,如京东、京东物流、京东商城…

cgspine / 2659人阅读

摘要:最近项目遇到一个小需求,就是在一段文字中,高亮几个关键词,例如以下文字京东是中国一家自营式购物网站,创始人刘强东担任京东集团。年月日,京东集团宣布正式组建京东物流子集团。

最近项目遇到一个小需求,就是在一段文字中,高亮几个关键词,例如以下文字:

京东(JD.com)是中国一家自营式B2C购物网站,创始人刘强东担任京东集团CEO。旗下设有京东商城、京东金融、拍拍网、京东智能、O2O及海外事业部。2013年正式获得虚拟运营商牌照。2014年5月,在美国纳斯达克证券交易所正式挂牌上市(股票代码:JD)。2016年6月与沃尔玛达成深度战略合作,1号店并入京东。2017年1月4日,中国银联宣布京东金融旗下支付公司正式成为银联收单成员机构。2017年4月25日,京东集团宣布正式组建京东物流子集团。2017年8月3日,2017年“中国互联网企业100强”榜单发布,京东排名第四位。

需要高亮的关键词:京东商城、京东、京东物流、京东集团

最简单的办法,就是利用正则表达式,像这样:

function addKeyWordHighline(oText,keyWords){
    //oText->一段文字,keyWords->关键词数组
    var returnVal=oText;
    for(var i=0;i"+keyWords[i]+"");
        }
    }
    return returnVal;
}

但是这样子做,会导致两个问题:
1、“京东物流”“京东集团”无法高亮
2、重复添加高亮标签。关键词“京东”在“京东商城”后面,会导致文字“京东商城”变成

京东商城

改进思路(分别对应问题1、2):
1、将关键词数组排序,长度较长的排在前面,优先高亮
2、将……区域排除。主要利用正则表达式中的元字符?!pattern(正向否定预查)实现。

正向否定预查:在任何不匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如"Windows(?!95|98|NT|2000)"能匹配"Windows3.1"中的"Windows",但不能匹配"Windows2000"中的"Windows"。

改进后的代码:

function addKeyWordHighline(oText,keyWords){
    var returnVal=oText,
        i=0,
        wordReg;
    keyWords.sort(compareWordLength);
    
    for(i=0;i.[^<]*)"+keyWords[i]+"(?!.[^<]*)","g");
            returnVal=returnVal.replace(wordReg,""+keyWords[i]+"");
        }
    }
    return returnVal;
}

function compareWordLength(a,b){
    if(a.length>b.length){
        return -1;
    }else if(a.length

最终效果:

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/113048.html

相关文章

  • 正则高亮多个相似键词京东京东物流京东商城

    摘要:最近项目遇到一个小需求,就是在一段文字中,高亮几个关键词,例如以下文字京东是中国一家自营式购物网站,创始人刘强东担任京东集团。年月日,京东集团宣布正式组建京东物流子集团。 最近项目遇到一个小需求,就是在一段文字中,高亮几个关键词,例如以下文字: 京东(JD.com)是中国一家自营式B2C购物网站,创始人刘强东担任京东集团CEO。旗下设有京东商城、京东金融、拍拍网、京东智能、O2O及海外...

    neroneroffy 评论0 收藏0
  • 正则高亮多个相似键词京东京东物流京东商城

    摘要:最近项目遇到一个小需求,就是在一段文字中,高亮几个关键词,例如以下文字京东是中国一家自营式购物网站,创始人刘强东担任京东集团。年月日,京东集团宣布正式组建京东物流子集团。 最近项目遇到一个小需求,就是在一段文字中,高亮几个关键词,例如以下文字: 京东(JD.com)是中国一家自营式B2C购物网站,创始人刘强东担任京东集团CEO。旗下设有京东商城、京东金融、拍拍网、京东智能、O2O及海外...

    TIGERB 评论0 收藏0
  • 京东云携手常州:云计算赋能千家万铺 打造发展新动能

    摘要:年月日,常州市天宁区政府天宁经济开发区管委会京东云和常州市近家地方企业集聚一堂,共同见证了云聚龙城共筑天宁千家万铺上京东常州云商大会的启动。年月日,京东云助力常州智造亮相年上海经贸活动周。在刚刚结束的全国两会上,云计算第四次被提上国家发展重要议程,成为推动中国制造2025的和国家信息产业发展的重要战略抓手。2018年3月23日,常州市天宁区政府、天宁经济开发区管委会、京东云和常州市近300家...

    cppowboy 评论0 收藏0

发表评论

0条评论

cgspine

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<