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

时间:2022-08-29 13:01:38
        //获取公示栏内容
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 正则匹配&lpar;去掉html标签&rpar;

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

  6. 正则匹配报文中的XML&lpar;HTML&rpar;标签,替换重新输出

    调用返回报文标签中的存在中划线“-”,不符合规范,需要统一进行转换,但不能替换标签内的内容,利用正则匹配重新输出 /** * 正则匹配报文中的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. 微信小程序二维码推广统计

    微信小程序可以通过生成带参数的二维码,那么这个参数是可以通过APP的页面进行监控的 这样就可以统计每个二维码的推广效果. 今天由好推二维码推出的小程序统计工具HotApp小程序统计也推出了带参数二维码 ...

  2. norm函数的作用,matlab

    格式:n=norm(A,p)功能:norm函数可计算几种不同类型的返回A中最大一列和,即max(sum(abs(A))) 2 返回A的最大奇异值,和n=norm(A)用法一样 inf 返回A中最大一行 ...

  3. 毕设1--利用Java实现网页的模板功能技术---简要了解

    首先,关于我对自己的毕业设计题目的理解,其中没有接触过的技术有怎么用Java实现将原有的Word的模板上传到网页中,在网页中进行相关操作.之所以把这部分放在一开始来进行了解是因为没有接触过这一方面,比 ...

  4. C&num;接口显示实现在实际开发中的作用

    摘要 任何一个C#入门的程序员都知道——当一个类型在实现接口的时候,有两种方法实现:显式实现.隐式实现.而且大家也都知道,当一个类型实现的两个接口存在相同成员定义时,显示实现可以解决这种情况. 但是, ...

  5. JS的运行机制

    代码块: JS中的代码块是指由<script>标签分割的代码段.JS是按照代码块来进行编译和执行的,代码块间相互独立(即就算代码块1出错,但不影响代码块2的加载和执行),但变量和方法共享. ...

  6. PDO常用方法及其应用

    PDO::query() 主要是用于有记录结果返回的操作,特别是SELECT操作 PDO::exec() 主要是针对没有结果集合返回的操作,如INSERT.UPDATE等操作 PDO::prepare ...

  7. 安装opencv以及遇到的坑

    参考这篇文章: http://www.tuicool.com/articles/36fMnem 还是国外的文章靠谱: http://docs.opencv.org/master/dd/dd5/tuto ...

  8. influxdb和boltDB简介——底层本质类似LMDB,MVCC&plus;B&plus;树

    influxdb influxdb是最新的一个时间序列数据库,最新一两年才产生,但已经拥有极高的人气.influxdb 是用Go写的,0.9版本的influxdb对于之前会有很大的改变,后端存储有Le ...

  9. 对于linux下system&lpar;&rpar;函数的深度理解&lpar;整理&rpar;

    原谅: http://blog.sina.com.cn/s/blog_8043547601017qk0.html 这几天调程序(嵌入式linux),发现程序有时就莫名其妙的死掉,每次都定位在程序中不同 ...

  10. Speech Module

    Speech Module 1 FIRST_TEN = ["one", "two", "three", "four", ...