js替换关键词为链接,只替换一次,要避开超链接或图片
要求把一段html脚本中的疾病名添加到疾病库的链接,只添加一次,要避开超链接或图片链接。
最初是用的 str.replace('糖尿病', '<a href=...>糖尿病</a>');
结果找了半天,愣是没找到替换后的效果,原来是有个图片的title中包含糖尿病,被它捷足先登了。
因此要把<a>链接、<img>标签避开,但<p><div>等标签不用避开
上图:
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替换关键词为链接,只替换一次,要避开超链接或图片相关推荐
- 使用 js替换网页中的关键词为链接
要求把一段html脚本中的疾病名添加到疾病库的链接,只添加一次,要避开超链接或图片链接. 最初是用的 str.replace('糖尿病', '<a href=...>糖尿病</ ...
- java pdf替换内容_java PDF批量替换关键词
java PDF批量替换关键词 要求:将要替换的字段封装到一个类中,并规定字段名与PDF中关键字的映射. 准备: 关键词信息类-----MatchItem package pdf.replace; i ...
- php关键词替换的类(避免重复替换_保留与还原原始链接),浅析PHP关键词替换的类(避免重复替换,保留与还原原始链接)...
时间:2015-09-24来源:www.aspku.com 作者:源码库 文章热度: ℃ 一个关键词替换的类,这个类主要用于关键词过滤,或者是关键词查找替换方面,关键词替换,其实就是一个str_rep ...
- Vue 菜单路由(router)只替换对应主页面中内容,而不是整个home页面的router index.js的两种设置方法
在系统登录到系统主页面之后,通过点击不同的菜单动态在主页面内替换相应的内容,而保持菜单栏和标题栏内容不变,可以通过以下两种方式实现,两种方式的原理都是相同的, 方式一:在路由设置时,设置一个home路 ...
- php正则替换%3cbr%3e_php利用正则替换过滤掉js(script)代码
利用php中的preg_replace正则匹配函数过滤掉网页中的js代码,preg_replace()中的第四个参数中表示替换的次数,默认是-1,表示替换全部:如果只想替换2次,可以写为 preg_r ...
- js 杠n换行符全部替换br
js \n全部替换br常用 //js 只替换第一个 function (str){return str.replace('\n','<br/>'); } //js \n全部替换<br ...
- highlight.js代码高亮后把空格替换成了无间断空格U+00A0
原文链接:http://xs.deld.vip/article/show/10.html 前端高亮正确,但复制高亮后的代码空格被处理成了无间断空格U+00A0 示例: 复制到的代码粘贴到viscode ...
- JS实现文本中查找并替换字符
JS实现文本中查找并替换字符 效果图: 代码如下,复制即可使用: <!DOCTYPE html><html> <head><style type=" ...
- phpcmsV9 关键词keywords删除、替换与修改
phpcmsV9 关键词keywords删除.替换与修改 phpcmsV9的关键词设置,并不能像其他功能调用一样,刷新网页就能查看效果,这个是已经写到 了后台的数据库里面.所以,需要进入数据库管理的后 ...
最新文章
- Compass(更新中。。。)
- 皮一皮:盖茨这婚离的是多土豪...
- matlab 排列 拆分,在matlab中将列表拆分为多个变量
- MongoDB-数据类型
- Linux启动重启停止DNS,ubuntu怎么开机停止启动smbd
- 动态导入模块__import__(str) importlib标准库
- sklearn tfidf求余弦相似度_【基础算法 】文本相似度计算
- Nokia n900使用
- Gambit中,interface和interior的区别
- 武汉大学2020年大学生程序设计大赛决赛(重现赛)J (oeis or 卡特兰数+可重集排列数)
- 让人感到惊艳的5款数据可视化大屏产品
- 法人 法人代表和法定代表人的区别
- 地理坐标系与投影坐标系区别与联系
- 【Matlab学习手记】三维矢量场图
- GetDC和BeginPaint
- win7全屏_Win7系统截图的方法
- 食物与体质 营养食谱
- FreeSWITCH 语音识别 阿里云ASR 2.0接口 接口实现
- 第五季完美童模 形象大使滕文泽现场走秀回顾
- 联想MIIX720二合一笔记本键盘维修(带键盘灯款)