A-A+
如何用正则把网页中的指定的字高亮显示代码
如何用正则把网页中的指定的字高亮显示代码,有需要的朋友可参考一下,不劳而获一次,这个子虚乌有前辈已经给出了非常好的解决方案,我直接把代码贴出来了:
- <!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,"\$1");
- }
- function decode(s){
- return s.replace(/\([\.*[]()$^])/g,"$1").replace(/>/g,">").replace(/</g,"<").replace(/&/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
- tt=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 (ttm=t.match(r)){
- cnt=tm.length;
- tt=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>