使用 js+正则表达式为关键词添加链接


Posted in Javascript onNovember 11, 2014

要求把一段html脚本中的疾病名添加到疾病库的链接,只添加一次,要避开超链接或图片链接。

最初是用的    str.replace('糖尿病', '<a href=...>糖尿病</a>');

结果找了半天,愣是没找到替换后的效果,原来是有个图片的title中包含糖尿病,被它捷足先登了。

因此要把<a>链接、<img>标签避开,但<p><div>等标签不用避开

上图:

使用 js+正则表达式为关键词添加链接

 s = "<a href='http://www.yx129.com/bingli/1_310.html'>先看一个糖尿病病历</a> <br/>" +  

         "<IMG style='vertical-align:middle' width=40 src='http://yx129.com/api/minisite/images/skin/green/doctor_thumb_100.png'/>糖尿病王医生<br/>" +  

         "糖尿病简介<br/>糖尿病发病率<br/><a href='baidu.com'>糖尿病症状<br/>" +  

         "</a> ";  

 document.write(s);  

   

 a_reg = /<a(.*?)<\/a>/i;  //a链接的正则  

 img_reg = /<img(.*?)>/i; //图片链接的正则,防止图片的title,alt什么的属性包括疾病名而误替换  

 var ix = 0;  

   

 var arr_ele = [];  

 //先把<a><img>2类标签全部替换为{{index}},然后处理剩下的文字,再把<a><img>标签的内容替换回去  

 while(true){  

    if(-1 == s.toLowerCase().indexOf('<a ') && -1 == s.toLowerCase().indexOf('<img ')){  

        break;  

    }  

    a_match = s.match(a_reg);  

    if(a_match){  

        //console.log(a_match);  

        arr_ele.push(a_match[0]);  

        s = s.replace(a_reg, '{{' +ix+ '}}');  

        ix++;  

    }  

    img_match = s.match(img_reg);  

    if(img_match){  

        //console.log(img_match);  

        arr_ele.push(img_match[0]);  

        s = s.replace(img_reg, '{{' +ix+ '}}');  

        ix++;  

    }  

    console.log(s);  

}  

  

document.write('<br>-------------------------<br>第1步:把链接替换为{{index}}后:<br>'+s+'<br>');  

  

s = s.replace(/糖尿病/i, "<a target='_blank' href='http://jibing.yx129.com/tnb'>糖尿病</a>");  

  

document.write('<br>-------------------------<br>第2步:添加疾病库链接后:<br>'+s+'<br>');  

  

if(arr_ele){  

    for(var i=0; i<arr_ele.length; i++){  

        s = s.replace('{{' + i + '}}', arr_ele[i]);  

    }  

}  

  

document.write('<br>-------------------------<br>第3步:把链接替换回去之后:<br>'+s+'<br>');

以上就是使用 js+正则表达式为关键词添加链接的全部代码了,简单吧,有需要的小伙伴可以参考下

Javascript 相关文章推荐
基于jquery的表头固定的若干方法
Jan 27 Javascript
超简单JS二级、多级联动的简单实例
Feb 18 Javascript
JavaScript设计模式之工厂模式和构造器模式
Feb 11 Javascript
jQuery可见性过滤器:hidden和:visibility用法实例
Jun 24 Javascript
浅析jQuery 3.0中的Data
Jun 14 Javascript
JavaScript中的事件委托及好处
Jul 12 Javascript
深入学习js瀑布流布局
Oct 14 Javascript
jQuery实现遍历XML节点和属性的方法示例
Apr 29 jQuery
vue.js的状态管理vuex中store的使用详解
Nov 08 Javascript
js中关于Blob对象的介绍与使用
Nov 29 Javascript
解决echarts图表使用v-show控制图表显示不全的问题
Jul 19 Javascript
javascript使用正则表达式实现注册登入校验
Sep 23 Javascript
jQuery 动态云标签插件
Nov 11 #Javascript
javascript 回调函数详解
Nov 11 #Javascript
JSON格式化输出
Nov 10 #Javascript
再谈javascript原型继承
Nov 10 #Javascript
让angularjs支持浏览器自动填表
Nov 10 #Javascript
使用cluster 将自己的Node服务器扩展为多线程服务器
Nov 10 #Javascript
前端必备神器 Snap.svg 弹动效果
Nov 10 #Javascript
You might like
PHP 进程锁定问题分析研究
2009/11/24 PHP
php实现首页链接查询 友情链接检查的代码
2010/01/05 PHP
PHP imagegrabscreen和imagegrabwindow(截取网站缩略图)的实例代码
2013/11/07 PHP
PHP 绘制网站登录首页图片验证码
2016/04/12 PHP
php遍历解析xml字符串的方法
2016/05/05 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
PHP中str_split()函数的用法讲解
2019/04/11 PHP
简单通用的JS滑动门代码
2008/12/19 Javascript
jQuery.autocomplete 支持中文输入(firefox)修正方法
2011/03/10 Javascript
EASYUI TREEGRID异步加载数据实现方法
2012/08/22 Javascript
jquery 按钮状态效果 正常、移上、按下
2013/08/12 Javascript
javascript修改表格背景色实例代码分享
2013/12/10 Javascript
jQuery表单域属性过滤器用法分析
2015/02/10 Javascript
bootstrap滚动监控器使用方法解析
2017/01/13 Javascript
JavaScript中的FileReader图片预览上传功能实现代码
2017/07/24 Javascript
Windows下快速搭建NodeJS本地服务器的步骤
2017/08/09 NodeJs
JavaScript数组排序reverse()和sort()方法详解
2017/12/24 Javascript
vue-cli3 热更新配置操作
2020/09/18 Javascript
js动态生成表格(节点操作)
2021/01/12 Javascript
使用Python发送各种形式的邮件的方法汇总
2015/11/09 Python
Python中list初始化方法示例
2016/09/18 Python
python 把数据 json格式输出的实例代码
2016/10/31 Python
python中map()函数的使用方法示例
2017/09/29 Python
使用Python实现windows下的抓包与解析
2018/01/15 Python
Python3.6 + TensorFlow 安装配置图文教程(Windows 64 bit)
2020/02/24 Python
Python利用matplotlib绘制折线图的新手教程
2020/11/05 Python
澳洲小众品牌的集合网站:BNKR
2018/02/23 全球购物
科颜氏英国官网:Kiehl’s英国
2019/11/20 全球购物
党组织公开承诺书
2014/03/29 职场文书
化学教育专业自荐信
2014/07/04 职场文书
2015社区个人工作总结范文
2015/05/13 职场文书
鸦片战争观后感
2015/06/09 职场文书
python如何在word中存储本地图片
2021/04/07 Python
Golang 实现获取当前函数名称和文件行号等操作
2021/05/08 Golang
Python破解极验滑动验证码详细步骤
2021/05/21 Python
关于Python中*args和**kwargs的深入理解
2021/08/07 Python