首页 > 代码库 > js正则匹配table,img及去除各种标签问题

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

                //获取公示栏内容         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,img及去除各种标签问题