zoukankan      html  css  js  c++  java
  • js正则匹配table,img及去除各种标签问题

            
            //获取公示栏内容
             s = "$row.detail$";
             mainContent =s;
             
             //如果有多个table使用下面注释的正则只会匹配成一个table
             //var tabReg = /<table[^>]*>((?!table).)*</table>/gi;
            //匹配单个table
             var tabReg = /<table[^>]*>s*(<tbody[^>]*>)?(s*<tr[^>]*>[sS]*?</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>
      
  • 相关阅读:
    Maven配置及本地仓库设置
    【转载】精神目标
    Maven构建项目后项目报Error错误Java compiler level does not match the version of the installed Java project fac
    MYSQL数据库无法使用IP地址访问的解决办法
    Unity3D基础--动态创建和设置游戏对象
    把解压缩版的tomcat6注册成服务并设置自启动
    ARToolKit for Unity环境搭建(初步搭建成功)
    问题
    关于SSH
    论文随笔
  • 原文地址:https://www.cnblogs.com/zoro-zero/p/4040343.html
Copyright © 2011-2022 走看看