使用 js+正則表達(dá)式為關(guān)鍵詞添加鏈接
要求把一段html腳本中的疾病名添加到疾病庫的鏈接,只添加一次,要避開超鏈接或圖片鏈接。
最初是用的 str.replace('糖尿病', '<a href=...>糖尿病</a>');
結(jié)果找了半天,愣是沒找到替換后的效果,原來是有個(gè)圖片的title中包含糖尿病,被它捷足先登了。
因此要把<a>鏈接、<img>標(biāo)簽避開,但<p><div>等標(biāo)簽不用避開
上圖:
s = "<a >先看一個(gè)糖尿病病歷</a> <br/>" +
"<IMG style='vertical-align:middle' width=40 src='http://yx129.com/api/minisite/images/skin/green/doctor_thumb_100.png'/>糖尿病王醫(yī)生<br/>" +
"糖尿病簡介<br/>糖尿病發(fā)病率<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類標(biāo)簽全部替換為{{index}},然后處理剩下的文字,再把<a><img>標(biāo)簽的內(nèi)容替換回去
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' );
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+正則表達(dá)式為關(guān)鍵詞添加鏈接的全部代碼了,簡單吧,有需要的小伙伴可以參考下
- 實(shí)例分析js和C#中使用正則表達(dá)式匹配a標(biāo)簽
- 用Javascript正則實(shí)現(xiàn)url鏈接的解析類
- Javascript 獲取鏈接(url)參數(shù)的方法[正則與截取字符串]
- node.js正則表達(dá)式獲取網(wǎng)頁中所有鏈接的代碼實(shí)例
- javascript 獲取鏈接文件地址中第一個(gè)斜線內(nèi)的正則表達(dá)式
- 刪除javascript中注釋語句的正則表達(dá)式
- javascript中使用正則表達(dá)式實(shí)現(xiàn)刪除字符串中的前后空格
- Java/Js下使用正則表達(dá)式匹配嵌套Html標(biāo)簽
- JavaScript正則替換HTML標(biāo)簽功能示例
- JavaScript正則表達(dá)式匹配 div style標(biāo)簽
- JavaScript實(shí)現(xiàn)正則去除a標(biāo)簽并保留內(nèi)容的方法【測試可用】
相關(guān)文章
微信小程序?qū)崿F(xiàn)五星評(píng)價(jià)
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)五星評(píng)價(jià),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08JavaScript制作windows經(jīng)典掃雷小游戲
掃雷是一款相當(dāng)大眾的小游戲,游戲目標(biāo)是在最短的時(shí)間內(nèi)根據(jù)點(diǎn)擊格子出現(xiàn)的數(shù)字找出所有非雷格子,同時(shí)避免踩雷。今天我們來看看如何使用javascript來實(shí)現(xiàn)這款小游戲2015-03-03動(dòng)態(tài)加載腳本提升javascript性能
動(dòng)態(tài)加載腳本可以有效提升javascript性能,下面有個(gè)不錯(cuò)的示例,大家可以參考下2014-02-02淺析js設(shè)置控件的readonly與enabled屬性問題
本篇文章是對(duì)js設(shè)置控件的readonly與enabled屬性問題進(jìn)行了介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助2013-12-12純JavaScript實(shí)現(xiàn)獲取onclick、onchange等事件的值
這篇文章主要介紹了JavaScript獲取onclick、onchange等事件的值的方法,需要的朋友可以參考下2014-12-12JS運(yùn)算符優(yōu)先級(jí)與表達(dá)式示例詳解
這篇文章主要給大家介紹了關(guān)于JS運(yùn)算符優(yōu)先級(jí)與表達(dá)式的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09echarts設(shè)置暫無數(shù)據(jù)方法實(shí)例及遇到的問題
Echarts是百度旗下的一款開源的商業(yè)級(jí)數(shù)據(jù)可視化產(chǎn)品,具有豐富的圖表類型,下面這篇文章主要給大家介紹了關(guān)于echarts設(shè)置暫無數(shù)據(jù)方法及遇到的問題的相關(guān)資料,需要的朋友可以參考下2022-12-12