龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > Javascript编程 >

如何用正则把网页中的指定的字高亮显示代码

时间:2012-12-29 08:41来源:未知 作者:admin 点击:
分享到:
如何用正则把网页中的指定的字高亮显示代码,有需要的朋友可参考一下 不劳而获一次,这个子虚乌有前辈已经给出了非常好的解决方案:我直接把代码贴出来了: 代码如下 !DOCTYPE h
如何用正则把网页中的指定的字高亮显示代码,有需要的朋友可参考一下

不劳而获一次,这个子虚乌有前辈已经给出了非常好的解决方案:我直接把代码贴出来了:

 代码如下

 <!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,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/([\.*[]()$^])/g,"\$1");
 }
 function decode(s){
   return  s.replace(/\([\.*[]()$^])/g,"$1").replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/&amp;/g,"&");
 }
 function highlight(s){
   if (s.length==0){
  alert('搜索关键词未填写!');
  return false;
   }
   s=encode(s);
   var obj=document.getElementsByTagName("body")[0];
   var t=obj.innerHTML.replace(/<spans+class=.?highlight.?>([^<>]*)</span>/gi,"$1");
   obj.innerHTML=t;
   var cnt=loopSearch(s,obj);
   t=obj.innerHTML
   var r=/{searchHL}(({(?!/searchHL})|[^{])*){/searchHL}/g
   t=t.replace(r,"<span class='highlight'>$1</span>");
   obj.innerHTML=t;
   alert("搜索到关键词"+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="搜索内容:"/><input type="submit" value="搜索"/></p>
 </form>
 <div id="content">
 测试高亮的代码。很长很长的代码……………………
 </div>
 </body>
 </html>


精彩图集

赞助商链接