使用 js替换网页中的关键词为链接

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

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

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

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

上图:

 

[javascript] view plaincopy在CODE上查看代码片派生到我的代码片
  1.    
  2.  s = "<a href='http://www.yx129.com/bingli/1_310.html'>先看一个糖尿病病历</a> <br/>" +  
  3.          "<IMG style='vertical-align:middle' width=40 src='http://yx129.com/api/minisite/images/skin/green/doctor_thumb_100.png'/>糖尿病王医生<br/>" +  
  4.          "糖尿病简介<br/>糖尿病发病率<br/><a href='baidu.com'>糖尿病症状<br/>" +  
  5.          "</a> ";  
  6.  document.write(s);  
  7.    
  8.  a_reg = /<a(.*?)<\/a>/i;  //a链接的正则  
  9.  img_reg = /<img(.*?)>/i; //图片链接的正则,防止图片的title,alt什么的属性包括疾病名而误替换  
  10.  var ix = 0;  
  11.    
  12.  var arr_ele = [];  
  13.  //先把<a><img>2类标签全部替换为{{index}},然后处理剩下的文字,再把<a><img>标签的内容替换回去  
  14.  while(true){  
  15.     if(-1 == s.toLowerCase().indexOf('<a ') && -1 == s.toLowerCase().indexOf('<img ')){  
  16.         break;  
  17.     }  
  18.     a_match = s.match(a_reg);  
  19.     if(a_match){  
  20.         //console.log(a_match);  
  21.         arr_ele.push(a_match[0]);  
  22.         s = s.replace(a_reg, '{{' +ix+ '}}');  
  23.         ix++;  
  24.     }  
  25.     img_match = s.match(img_reg);  
  26.     if(img_match){  
  27.         //console.log(img_match);  
  28.         arr_ele.push(img_match[0]);  
  29.         s = s.replace(img_reg, '{{' +ix+ '}}');  
  30.         ix++;  
  31.     }  
  32.     console.log(s);  
  33. }  
  34.   
  35. document.write('<br>-------------------------<br>第1步:把链接替换为{{index}}后:<br>'+s+'<br>');  
  36.   
  37. s = s.replace(/糖尿病/i, "<a target='_blank' href='http://jibing.yx129.com/tnb'>糖尿病</a>");  
  38.   
  39. document.write('<br>-------------------------<br>第2步:添加疾病库链接后:<br>'+s+'<br>');  
  40.   
  41. if(arr_ele){  
  42.     for(var i=0; i<arr_ele.length; i++){  
  43.         s = s.replace('{{' + i + '}}', arr_ele[i]);  
  44.     }  
  45. }  
  46.   
  47. document.write('<br>-------------------------<br>第3步:把链接替换回去之后:<br>'+s+'<br>'); 

转载于:https://www.cnblogs.com/xiaochao12345/p/4089293.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/459906.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

凡人修仙传显示无法连接服务器,《凡人修仙传》网络异常及橙色BOSS补偿说明...

【网络异常及橙色BOSS补偿说明】亲爱的玩家朋友&#xff1a;《凡人修仙传》所有服务器由于网络异常在今晚(12月6日晚)陆续出现了延迟与宕机。对广大玩家造成了影响&#xff0c;我们深表歉意&#xff01;网络异常还对部分大区的橙色BOSS造成了影响&#xff0c;导致活动没有顺利进…

白屏优化_今日头条品质优化 图文详情页秒开实践

背景作为一个内容类应用&#xff0c;看新闻读资讯一直是头条用户的核心需求&#xff0c;页面的打开速度直接关系到用户使用头条的核心体验&#xff0c;在头条中&#xff0c;为了更多的承载足够丰富的样式和逻辑下保持多端体验的统一&#xff0c;详情页的内容我们是通过 WebView…

JPA字段长度 Mysql数据库

2019独角兽企业重金招聘Python工程师标准>>> 今天有个表字段超长了&#xff0c;默认是255&#xff0c;当时随手把表结构改成3600。然后晚上回来研究JPA控制的字段长度。 实验一&#xff1a; Column(length50, nullabletrue) private String valueText; 毫无疑问&…

JavaWeb学习----Cookie实现记住密码的功能

【声明】 欢迎转载&#xff0c;但请保留文章原始出处→_→ 生命壹号&#xff1a;http://www.cnblogs.com/smyhvae/ 文章来源&#xff1a;http://www.cnblogs.com/smyhvae/p/4096807.html 【正文】 本文主要内容&#xff1a; •1、什么是Cookie •2、Cookie带来的好处 •3、Co…

【学习笔记】在storyboard中给TabViewController添加tab页面

正题&#xff1a;1、首页动态拖一个UIViewController到storyboard中2、然后右键UITabBarController在木manaul栏右侧的加号连线新的UITabViewController就成功添加完毕转载于:https://blog.51cto.com/3048821/1682420

使用matlab画半透明椭圆

先上最终效果图&#xff1a; 本来是想直接用scatter和alpha来画的&#xff0c;结果在尝试以下代码后&#xff0c;发现无法显示透明效果 scatter(rand(1000,1),rand(1000,1), filled); alpha(0.5) 具体原因可以参考stackoverflow&#xff08;http://stackoverflow.com/questions…

双y轴如何合并图例_如何对图表批量组合、对齐、画中画、合并图例、自动化加标签。。。...

关于图表的组合排版&#xff0c;在之前的微信文章中介绍过很多常规的方法&#xff0c;比如《绘制复杂组合图表的独家秘笈分享》、《如何用Graphpad Prism绘制超复杂组合图&#xff1f;》、《如何用Origin完成图表排版&#xff1f;》等。可是&#xff0c;有小伙伴就问了&#xf…

小米5s的位置服务器,小米手机NFC在哪里?告诉你小米手机NFC位置(包括小米5/5s/6/MIX2/Note3)...

NFC功能的普及为智能手机锦上添花&#xff0c;闪付、充值交通卡、模拟门卡、模拟交通卡...NFC的功能越来越强大了&#xff0c;日常生活中需要用到的地方也越来越多了。可问题往往会在这个时候被发现&#xff0c;许多人在使用NFC的时候总是失败。比如说充值交通卡吧&#xff0c;…

lastb

lastb命令系统安全lastb命令用于显示用户错误的登录列表&#xff0c;此指令可以发现系统的登录异常。单独执行lastb命令&#xff0c;它会读取位于/var/log目录下&#xff0c;名称为btmp的文件&#xff0c;并把该文件内容记录的登入失败的用户名单&#xff0c;全部显示出来。语法…

扫地机器人滤网顺序_1分钟小课堂:扫地机器人滤网多久换一次?

作为扫地机器人使用中的一大耗材&#xff0c;滤网的更换你了解吗&#xff1f;扫地机器人通常会在尘盒的排气位置安装滤网&#xff0c;这是为了保证排出的空气是洁净的&#xff0c;防止二次污染。滤网用一段时间就会沾满灰尘&#xff0c;但市面上绝大多数扫地机器人的滤网是不能…

微信转发的文件服务器留存吗,微信转发这种视频会感染病毒泄露隐私?网警的查证结果来了...

原标题&#xff1a;微信转发这种视频会感染病毒泄露隐私&#xff1f;网警的查证结果来了最近网上流传一条“紧急通知”&#xff0c;称微信上流传着一些必须转发后才能继续观看的视频&#xff0c;这些视频其实被内植病毒&#xff0c;一旦转发&#xff0c;机主隐私立马被泄露。真…

在Linux中创建静态库.a和动态库.so

转自&#xff1a;http://www.cnblogs.com/laojie4321/archive/2012/03/28/2421056.html 在Linux中创建静态库.a和动态库.so 我们通常把一些公用函数制作成函数库&#xff0c;供其它程序使用。 函数库分为静态库和动态库两种。 1. 静态函数库 这类库的名字一般是libxxx.a&#x…

带通滤波器作用和用途_带通滤波器作用

带通滤波器作用带通滤波器是一个允许特定频段的波通过同时屏蔽其他频段的设备。比如RLC振荡回路就是一个模拟带通滤波器。带通滤波器是指能通过某一频率范围内的频率分量、但将其他范围的频率分量衰减到极低水平的滤波器&#xff0c;与带阻滤波器的概念相对。一个模拟带通滤波器…

服务器升级虚拟化,刀片服务器内置虚拟化 IBM升级服务器

IBM 宣布推出内置VMWare管理程序的新型&#xff0c;以使客户更加快捷、简便地实现。带有内置VMware ESX 3i管理程序的新型BladeCenter HS21 XM刀片服务器将帮助客户加快服务器虚拟化或者升级到更先进的虚拟功能&#xff0c;在提供高可靠性的同时&#xff0c;简化系统。HS21 XM刀…

WEB开发新人指南

写给母校UESTCweb开发方向的同学&#xff0c;也分享给大家&#xff0c;希望多提好的意见&#xff0c;沟通交流。 博客原文链接&#xff1a;http://leuisken.github.io/2015/07/17/web-dev/ 转载请注明出处 一、首先要知道的 如今我们使用的互联网&#xff0c;客户端与服务器端的…

skywalking服务端_skywalking部署

文件列表apache-skywalking-apm-7.0.0.tar.gz&#xff1a;服务端文件mysql-connector-java-5.1.30.jar&#xff1a;mysql jdbc驱动jar包需要条件Jdk1.8以上mysql5.7以上服务端部署把文件上传到服务器上/root目录下scp apache-skywalking-apm-7.0.0.tar.gz root192.168.3.211:/r…

微软Connect教程系列--自动生成增删改查页面工具介绍(二)

本章课程描述了vs2015的三个特点&#xff0c;其中主要将描述在vs2015下面&#xff0c;使用命令自动生成增删改查界面&#xff0c;具体如下&#xff1a; 1、web.config文件不在存在&#xff0c;用config.json替代&#xff0c;以适应支撑vs的插件化。 即config.json可以在项目中不…

新增成功到编制为空bug_36 个JS 面试题为你助力,让面试更有力(面试必读)

来源&#xff1a;javapoint译者&#xff1a;前端小智点赞再看&#xff0c;养成习惯本文 GitHub https://github.com/qq44924588... 上已经收录&#xff0c;更多往期高赞文章的分类&#xff0c;也整理了很多我的文档&#xff0c;和教程资料。欢迎Star和完善&#xff0c;大家面试…

Lua协程

协作例程 1、同一时刻仅一个例程在运行 2、执行权让渡和恢复【栈】转载于:https://www.cnblogs.com/freebird92/p/4713106.html

PI数据库的使用-PI System Management Tools

1、PI连接管理器 2、标记搜索 3、当前值 转载于:https://www.cnblogs.com/jumahe/p/4107790.html