//获取公示栏内容
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. python逻辑回归 自动建模

    #-*- coding: utf-8 -*- #逻辑回归 自动建模 import numpy as np import pandas as pd from sklearn.linear_model i ...

  2. Ajax 響應

    獲取服務器的響應內容,可以使用responseText或者responseXML屬性 responseText:獲取字符串形式的相應內容,除了XML的響應內容以外可用 responseXML:獲取XM ...

  3. Lodop打印设计界面生成代码带”...(省略)”

    Lodop的设计界面中,菜单里的生成代码,如果打印项内容过多,后面会显示”...(省略)”,省略的是打印项的内容值,无论是纯文本还是超文本,都可以用选中打印项-右键-设置属性里找到该打印项的全部值,可 ...

  4. Linux学习之/etc/init.d/目录和rc.local脚本

    init.d目录中包含很多系统服务的启动和停止脚本,比较常用的就是网络服务,当你修改了网络配置时,可以自行 sudo /etc/init.d/networking restart  命令来重启网络服务 ...

  5. BZOJ1803Spoj1487 Query on a tree III——主席树

    题目大意 给一棵有点权的n个点的有根树,保证任意两点的点权不同,m次询问每次询问x的子树中权值第k大的点. 输入 先输入n,然后每个点点权,再输入n-1行每行两个数x,y代表x和y相连,再输入m,之后 ...

  6. iOS 【终极方案】精准获取webView内容高度,自适应高度

    前言:是这样的,刚写完上一篇文章还没缓过神来,上一篇文章我还提到了,想和大家聊聊原生+H5如何无缝连接的故事.结果我朋友就给我发了两篇他的作品.他的做法也都有独到之处.好的文章都是这样,让你每次看都能 ...

  7. 01 Zabbix采集数据方式

    Zabbix采集数据方式 1. zabbix采集数据方式: 基于专用agent   被监控的设备上面安装agent软件,这个agent必须在设备上面有采集数据的权限 基于SNMP,  net-snmp ...

  8. 压缩和解压缩文件tar, tar.gz and tar.bz2

    1, 对于tar.gz 压缩:tar -zcvf archive-name.tar.gz directory-name 解压:tar -zxvf prog-1-jan-2005.tar.gz -C / ...

  9. 【codevs4919】线段树练习4

    题目大意:维护一个长度为 N 的序列,支持两种操作:区间加,区间查询有多少数是 7 的倍数. 题解:在每个线段树中维护一个权值数组 [0,6],由于个数显然支持区间可加性,因此可用线段树来维护. 代码 ...

  10. apigateway-kong(五)集群搭建部署

    kong 集群将使得系统通过增加更多机器,从而实现水平扩展,承接更多的请求流量.它们将共享同样的配置且使用同一个数据库.kong 集群中的的所有节点都连接同一个数据库. 你需要在 kong 集群的上一 ...