//获取公示栏内容
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及去除各种标签问题的更多相关文章

  1. js正则匹配的一个日常应用

    应用实例 1 /** 将段落中的 \n 转换为 <p></p>, 规范存储 */ 2 function formatParagraphForStore(val) { 3 var ...

  2. JS正则密码复杂度校验之:JS正则匹配半角英文符号

    概述 在JS密码校验中常常会遇到密码强度的校验需求,借用一位朋友提问的图,他在工作中遇到的一个比较经典的密码强度校验要求: 这个需求有两个难点,一,是如何使用正则匹配所有半角英文标点符号,二,是如何验 ...

  3. js正则匹配两位小数

    今天写一个用js正则校验最多保留两位小数的格式. a = /^\d+|\d+\.\d{1,2}$/; 测试 a.test(1.222); 结果:true 一下蒙了,怎么可能,最后找了好久,原来需要把^ ...

  4. js 正则匹配 域名【host】

    如果直接在js中是可以直接取到hostname的,以下方式是通过正则匹配: var url = "http://www.cnblogs.com/cench" var reg = / ...

  5. js 正则匹配(去掉html标签)

    正则匹配去掉所有html标签 var a = "<span>999</span>" a = a.replace(/<[^>]+>/g,' ...

  6. 正则匹配报文中的XML(HTML)标签,替换重新输出

    调用返回报文标签中的存在中划线“-”,不符合规范,需要统一进行转换,但不能替换标签内的内容,利用正则匹配重新输出 /** * 正则匹配报文中的xml标签,将其中的"-"转换为&qu ...

  7. Jqgrid利用正则匹配表达式正确移除html标签

    在使用JqGrid表格插件过程中,遇到一个问题:后台取出来的字段是带有Html标签的,于是将内容填充到表格之后,带有的html标签会把表格撑开或者每一行的内容显示不统一,导致非常难看,就像下图所示: ...

  8. js正则匹配以某字符串开始字符串

    let decode_sql ="select * from table where create_user='user' order by id desc";   decode_ ...

  9. js正则匹配字符串

    这里我第一时间想到的就是用 js 的search 和 match ,其中最常见的是match: 1. str.search(regexp):search()方法不支持全局搜索,因为会忽略正则表达式参数 ...

随机推荐

  1. pandas创建一个日期

    1.通过指定周期和频率,使用date.range()函数就可以创建日期序列. 默认情况下,范围的频率是天. 2.bdate_range()用来表示商业日期范围,不同于date_range(),它不包括 ...

  2. iptables防火墙配置

    iptables防火墙配置 一.防火墙简介 1.功能: 1)通过源端口,源IP地址,源MAC地址,包中特定标记和目标端口,IP,MAC来确定数据包是否可以通过防火墙 2)分割内网和外网[附带的路由器的 ...

  3. Delphi中统一显示表格字段名的高效方法

    问题描述:在开发数据库程序时,我们经常要使用很多的表格显示组件DBGrid.当DBGrid显示某表格的数据时,其字段标题默认的就是后台数据库中的表格的字段名称.而为了数据库开发方便,后台数据库中的表格 ...

  4. BZOJ1782[USACO 2010 Feb Gold 3.Slowing down]——dfs+treap

    题目描述 每天Farmer John的N头奶牛(1 <= N <= 100000,编号1…N)从粮仓走向他的自己的牧场.牧场构成了一棵树,粮仓在1号牧场.恰好有N-1条道路直接连接着牧场, ...

  5. 【Linux】memcache和memcached的自动安装

    赶时间所以写一个简单的一个脚本,没有优化,想优化的可以学习下shell,自己优化下. 且行且珍惜,源码包+脚本领取处 链接:https://pan.baidu.com/s/1wIFR1wY-luDKs ...

  6. day7 新三级菜单

    # 简单吧简单吧,用动态变量不停的改变进行遍历 menu = { "北京":{ "朝阳":{ "国贸":{ "CICC" ...

  7. MT【214】焦点弦长公式

    已知椭圆焦点为$F_1(-1,0),F_2(1,0)$,且椭圆与直线$y=x-\sqrt{3}$相切,求(1)椭圆的方程(2)过$F_1$作两条相互垂直的直线$l_1,l_2$与椭圆相交于$P,Q,M ...

  8. luogu3380/bzoj3196 二逼平衡树 (树状数组套权值线段树)

    带修改区间K大值 这题有很多做法,我的做法是树状数组套权值线段树,修改查询的时候都是按着树状数组的规则找出那log(n)个线段树根,然后一起往下做 时空都是$O(nlog^2n)$的(如果离散化了的话 ...

  9. Dijstra算法求最短路径

    参考博客:http://blog.51cto.com/ahalei/1387799        与Floyd-Warshall算法一样这里仍然使用二维数组e来存储顶点之间边的关系,初始值如下.   ...

  10. intest

    /* ============================================================================ Name : http.c Author ...