有如下代碼: 復(fù)制代碼 代碼如下: channel title 藍(lán)色理想 /title /channel item title 界面設(shè)計(jì)測(cè)試規(guī)范 /title /item item title 《古典寫實(shí)美女》漫畫教程 /title /item item title 安遠(yuǎn)――消失的光年 /title /item item title asp.net 2.0多語(yǔ)言網(wǎng)站解決方案 /title /item
要求匹配item里的title而不匹配channel里的title。
基本正則:
/ title [/s/S]*? //title /gi 首先是title標(biāo)簽,內(nèi)容為任意字符若干個(gè),然后是title結(jié)束標(biāo)簽。這個(gè)正則已經(jīng)能匹配到所有的title標(biāo)簽。
首先,我簡(jiǎn)單地修改了一下原正則:
/ title [^ ]*? //title /gi,因?yàn)閠itle里面不應(yīng)該再嵌有其它標(biāo)簽,這個(gè)正則同樣是匹配所有標(biāo)題的內(nèi)容,最后再加上不去匹配channel中的title。整個(gè)正則如下:
/ title [^ ]*? //title (?!/s* //channel )/gi(?!/s* //channel )表示要匹配字符串的后面不能跟著若干個(gè)空格和一個(gè)channel的結(jié)束標(biāo)簽。
IamUE給出了代碼: 復(fù)制代碼 代碼如下: script type="text/javascript" var _A = ['A','B','C','D']; var _B = ' ul li $0$ /li li $1$ /li li $2$ /li li $3$ /li /ul var reg=//$/d+/$/ig; C=_B.replace(reg,function($1){ var indexnum=$1.replace(//$/ig,""); if (indexnum _A.length) {return _A[indexnum];} else{return ""} }); alert(C); /script
不勞而獲一次,這個(gè)子虛烏有前輩已經(jīng)給出了非常好的解決方案:我直接把代碼貼出來(lái)了: 復(fù)制代碼 代碼如下: !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-transitional.dtd" html xmlns="http://www.w3.org/1999/xhtml" head meta http-equiv="Content-Type" content="text/html; charset=gb2312" / META name="Author" content="Sheneyan" / script type="text/javascript" function encode(s){ return s.replace(/&/g," ").replace(/ /g," ").replace(/ /g," ").replace(/([///./*/[/]/(/)/$/^])/g,"http://$1"); } function decode(s){ return s.replace(///([///./*/[/]/(/)/$/^])/g,"$1").replace(/ /g," ").replace(/ /g," ").replace(/ /g," } function highlight(s){ if (s.length==0){ alert('搜索關(guān)鍵詞未填寫!'); return false; } s=encode(s); var obj=document.getElementsByTagName("body")[0]; var t=obj.innerHTML.replace(/ span/s+ "$1"); obj.innerHTML=t; var cnt=loopSearch(s,obj); t=obj.innerHTML var r=/{searchHL}(({(?!//searchHL})|[^{])*){//searchHL}/g t=t.replace(r," span $1 /span obj.innerHTML=t; alert("搜索到關(guān)鍵詞"+cnt+"處") } function loopSearch(s,obj){ var cnt=0; if (obj.nodeType==3){ cnt=replace(s,obj); return cnt; } for (var i=0,c;c=obj.childNodes[i];i++){ if (!c.className||c.className!="highlight") cnt+=loopSearch(s,c); } return cnt; } function replace(s,dest){ var r=new RegExp(s,"g"); var tm=null; var t=dest.nodeValue; var cnt=0; if (tm=t.match(r)){ cnt=tm.length; t=t.replace(r,"{searchHL}"+decode(s)+"{/searchHL}") dest.nodeValue=t; } return cnt; } /script style type="text/css" .highlight{background:green;font-weight:bold;color:white;} /style /head body form onsubmit="highlight(this.s.value);return false;" p input name="s" id="s" title="搜索內(nèi)容:"/ input type="submit" value="搜索"/ /p /form div id="content" 測(cè)試高亮的代碼。很長(zhǎng)很長(zhǎng)的代碼…………………… /div /body /html