在项目时代遇到一个需求,就是搜索关键词时需要高亮显示,主要通过正则匹配来实现页面关键词高亮显示。
效果如下:
代码:
<style> em{ color:red; } </style> <script> /*正则匹配中文、英文关键字高亮,高亮后的关键字和之前的大小写保持一致*/ function keyLightet(str){ var key = "js 前端";//这里界说关键词 key = '('+key.replace(/([\+\.\*\|\?\-\(\[\^\$])/g,'\\$1' ).replace(/\s+/g,'|')+')';//把匹配关键字中的正则符转义 var patt=new RegExp(key ,'igm'); var str2=str.replace(patt,"<em>$1</em>"); return str2; } var str="迎接接见fly63.com,web前端主要由:css,js,html组成!"; console.log(keyLightet(str)); //效果:迎接接见fly63.com,web<em>前端</em>主要由:css,<em>js</em>,html组成!
有一组关键词数组,在数组中筛选出相符关键字的内容并将关键字高亮。
效果如下:
代码实现:
<style> em{ color:red; } </style> function searchLightet(words,val){ var tips = [];//筛选后的关键词数组 if(val!=''){ var reg = new RegExp("^"+val); for(var i =0;i<words.length;i++){ if(reg.test(words[i])){ tips.push(words[i]); } } } var result=[]; for(var w in tips){ result.push("<em>"+val+"</em>"+tips[w].substr(tips[w].indexOf(val)+val.length)); } return result } var arr=['web','前端','js','测试','css','java','js前端','vue','react','jquery'] console.log(searchLightet(arr,'j'));//搜索为j的时刻 //效果:["<em>j</em>s", "<em>j</em>ava", "<em>j</em>s前端", "<em>j</em>query"]
1.阿里云: 本站现在使用的是阿里云主机,平安/可靠/稳固。点击领取2000米代金券、领会最新阿里云产物的种种优惠流动点击进入
2.腾讯云: 提供云服务器、云数据库、云存储、视频与CDN、域名等服务。腾讯云各种产物的最新流动,优惠券领取点击进入
3.广告同盟: 整理了现在主流的广告同盟平台,若是你有流量,可以作为参考选择适合你的平台点击进入
链接: http://www.fly63.com/article/detial/1303