欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

js正则匹配table,img及去除各种标签问题

程序员文章站 2022-08-18 08:56:40
核心代码//获取公示栏内容 s = "$row.detail$"; maincontent =s; //如果有多个table使用下面注释的正则只会匹配成一个table...

核心代码

//获取公示栏内容
     s = "$row.detail$";
     maincontent =s;
     
     //如果有多个table使用下面注释的正则只会匹配成一个table
     //var tabreg = /<table[^>]*>((?!table).)*<\/table>/gi;
    //匹配单个table
     var tabreg = /<table[^>]*>\s*(<tbody[^>]*>)?(\s*<tr[^>]*>[\s\s]*?<\/tr>\s*)*(<\/tbody>)?\s*<\/table>/gi;
     var tabmatch = tabreg.test(s);
     
     var tabmatchcontentarray = s.match(tabreg);
 
     if(tabmatch)
     {
      
      maincontent = s.replace(tabreg,"#");
     }
     
     //对img标签进行匹配
     var imgreg = /<img.*?(?:>|\/>)/gi;
     
     imgmatchcontentarray = s.match(imgreg);
    
     if(imgreg.test(s))
     {
      //将img标签替换为*
      maincontent = maincontent.replace(imgreg,"*");
     }
     //处理html标签
     maincontent = maincontent.replace(/&nbsp;/gi," ");
     var preg1 = /<p>/gi;
     var preg2 = /<\/p>/gi;
     maincontent = maincontent.replace(preg1,"").replace(preg2,"<br />");
     //下面的htmlreg1 ,htmlreg2可以匹配任意标签
//     var htmlreg1 =/<[^>]+>/gi;
//     var htmlreg2 =/<(.+?)[\s]*\/?[\s]*>/gi;
//     
//     maincontent = maincontent.replace(htmlreg1,"").replace(htmlreg2,"");
     //maincontent = maincontent.replace(/&/gi,"<p>").replace(/@/gi,"</p>");
    var pageindex = 1;
    var size = 500;
    var tablecontentarray = maincontent.split("#");
    var array = []; //存放以table分割后的数组中每个数组可以分作几页
    
    var arrayindex = []; //存放table在内容中的索引
    
    var len =0;
    for(var i=0;i<tablecontentarray.length;i++)
    {
      var con = tablecontentarray[i];
      
      len += con.length;
      
      arrayindex[i] = len;
      
      array[i] = math.ceil(con.length /size);
    }
    
    
    var tableindexarray = [];//存放table内容页码数
    
    var sum = 1;
    
    for(var j=0;j<array.length-1;j++)
    {
      
      sum += array[j];
      tableindexarray[j] = sum;
    }
    
    
    var currentpagecontent = maincontent.substr((pageindex-1)*size,size);
    
    
    if(tableindexarray.indexof(pageindex) >= 0)
    {
      currentpagecontent = tabmatchcontentarray[tableindexarray.indexof(pageindex)];
    }
    
    
    if(currentpagecontent.indexof("#")!= -1)
    {
      
      var begintocurrentpagecontent = maincontent.substr(0,pageindex*size);      
      var tablastindex = begintocurrentpagecontent.lastindexof("#");
      currentpagecontent = currentpagecontent.substr(0,tablastindex-(pageindex-1)*size);
 
      //当前页是否有 * 获取最后一个 * 的位置 
      var indexof = currentpagecontent.indexof("*");
      
      if(indexof >= 0)
      {         
         //获取开始到当前页位置的内容 中的 * 的最后的下标 
         var recount = begintocurrentpagecontent.split("*").length - 1;
          
         var contentarray = currentpagecontent.split("*");
         
         currentpagecontent = replaceimgcontent(contentarray,recount,imgmatchcontentarray);  
      }
        
    }
    else
    {
      
      //当前页是否有 * 获取最后一个 * 的位置 
      var indexof = currentpagecontent.indexof("*");
      
      if(indexof >= 0)
      {
         //获取从开始位置到当前页位置的内容
         var begintocurrentpagecontent = maincontent.substr(0,pageindex*size);
         
         //获取开始到当前页位置的内容 中的 * 的最后的下标 
         var recount = begintocurrentpagecontent.split("*").length - 1;
          
         var contentarray = currentpagecontent.split("*");
         
         currentpagecontent = replaceimgcontent(contentarray,recount,imgmatchcontentarray);
         
      }
      
    }
    
    if(currentpagecontent=="")
    {
      alert("页码数超过范围");
    }
    else
    { 
      document.getelementbyid("annoucontent").innerhtml= currentpagecontent;
    }
    
    /* currentarray:当前页以 * 分割后的数组
      replacecount:从开始内容到当前页的内容 * 的个数
      matcharray : img标签的匹配的内容
    */
    function replaceimgcontent(currentarray,replacecount,matcharray)
    {      
      var result = "";
      for(var i=currentarray.length -1,j = replacecount-1 ;i>=1; i--)
      {        
        var temp = (matcharray[j] + currentarray[i]);
        result = temp + result;
        j--;
      }      
      result = currentarray[0] + result ;      
      return result;
    }    
  </script>

下面是一些补充

js正则匹配删除table

var reg = /<[\/]*(table|td|tr)[ a-za-z=''""]*>|123/g

一个javascript正则表达式,table中只保留colspan和rowspan

html = html.replace(/<(tbody|thead|tfoot|th|tr|td)[^>]*?(colspan\s*=\s*["']?[^"'>\s]*["']?[^>]*?)?(rowspan\s*=\s*["']?[^"'>\s]*["']?[^>]*?)?>/gi,"<$1 $2 $3>");

以上就是js正则匹配table,img及去除各种标签问题的详细内容,更多关于js正则匹配table,img的资料请关注其它相关文章!