当前位置: 移动技术网 > IT编程>开发语言>正则 > js正则匹配table,img及去除各种标签问题

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

2020年05月12日  | 移动技术网IT编程  | 我要评论

789家常菜谱1000例,托蒂勺子点球,李馨巧的父母

核心代码

//获取公示栏内容
     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的资料请关注移动技术网其它相关文章!

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网