js正则匹配table,img及去除各种标签问题
- 作者: Destined丶柒月
- 来源: 51数据库
- 2021-08-02
核心代码
//获取公示栏内容
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;
}
/* 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的资料请关注其它相关文章!
推荐阅读
