js正则匹配table,img及去除各种标签问题(正则表达式去除空行)越早知道越好

随心笔谈12个月前发布 admin
93 0


//获取公示栏内容
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(/ /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;
}

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>

© 版权声明

相关文章