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

核心代码

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

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的资料请关注我们其它相关文章!

(0)

相关推荐

  • javascript清理table样式

    项目中遇到这样的需求,一大段文章正文的html代码在手机中显示不全,原因是由于其它有table,而table表格中的tr/td都携带了从word中粘贴过来的样式,需要将这一大段的字符串中的table.tr.td中携带的样式清除掉,同时还不能破坏table结构,即要保留tr中的rowspan和td中的colspan属性. html部分代码如下: <p class="MsoNormal" align="left" style="text-align:le

  • js正则匹配table tr

    我觉得比ijao简单,但是脑子就是转不过弯....请正则高手看看阿. 复制代码 代码如下: <textarea id="txt">  <table border=1 width="20%">                    <tr><th>title</th><th>title2</th></tr>             <tr rs="{id:\

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

    核心代码 //获取公示栏内容 s = "$row.detail$"; mainContent =s; //如果有多个table使用下面注释的正则只会匹配成一个table //var tabReg = /<table[^>]*>((?!table).)*<\/table>/gi; //匹配单个table var tabReg = /<table[^>]*>\s*(<tbody[^>]*>)?(\s*<tr[^>

  • JS正则匹配中文的方法示例

    本文实例讲述了JS正则匹配中文的方法.分享给大家供大家参考,具体如下: 需求:使用JS正则的方式将字符串 "[微笑][撇嘴][发呆][得意][流泪]" 中的汉字进行匹配输出. 示例代码: <script> var pattern1 = /[\u4e00-\u9fa5]+/g; var pattern2 = /\[[\u4e00-\u9fa5]+\]/g; var contents = "[微笑][撇嘴][发呆][得意][流泪]"; content = c

  • JS正则匹配URL网址的方法(可匹配www,http开头的一切网址)

    本文实例讲述了JS正则匹配URL网址的方法.分享给大家供大家参考,具体如下: 最强的匹配网址-url的正则表达式:匹配www,http开头的一切网址 直接插入正则表达式: [a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.? 完整的js方法: function isURL(domain) { var name = /[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z

  • js正则匹配出所有图片及图片地址src的方法

    本文实例讲述了js正则匹配出所有图片及图片地址src的方法.分享给大家供大家参考.具体分析如下: 有很多时候我们需要用到文章里面的图片,而且主要是用到它的图片地址,这个时候我们需要通过正则匹配出图片标签,然后做到我们需要的数据 平时也没怎么用正则,一不学就忘,最近项目需要,然后又去goole了,好乱!一搜一大堆,也不是我想要的,最后把自己留一个已被后用: 实现:通过js正则匹配出所有图片及所有图片地址src. 思路:1.匹配出图片img标签(即匹配出所有图片),过滤其他不需要的字符 从匹配出来的

  • js正则匹配多个全部数据问题

    需求:获取所有title里的内容 正则表达式后面加g表示多次匹配 方式一:match 返回数组 方式二 exec <script> var str='<a href="//www.aliexpress.com/store/product/OOOT-BAORJCT-174296-22mm-10yard-lot-cartoon-Ribbons-Thermal-transfer-Printed-grosgrain-Wedding-Accessories-DIY-handmade/23

  • js正则匹配markdown里的图片标签的实现

    其实前端后端需要将markdown文本转换为html文本都有相应的库,几句代码就ok,但有时我们又必须获取到markdown里的某个标签来进行相应的转换,有几种办法,可以从已经转换好的html文本里获取,还有的就是直接从markdown文本里获取,这里说的是第二种. 1. 一个markdown里只有一个图片的情况 const str = "asddsad![标题](url)asdasddasd"; //一段markdown文本,包含一个图片"![标题](url)"

  • 一个关于JS正则匹配的踩坑记录

    最近发现在JS里的正则匹配有一个坑,而且当时很莫名奇妙,一度让我怀疑出现了灵异事件. 下面是踩坑代码 var str=["二七1","二七2","金水","二七3","二七4","二七5"] var reg=new RegExp("二七","g"); for(var i=0;i<str.length;i++){ if(reg.test(str

  • 解决js正则匹配换行问题实现代码

    复制代码 代码如下: <div id="main"> <div id="left"> </div> <div id="right"> php </div> </div> 如果DIV内没有内容则不换行 把上面的改为: 复制代码 代码如下: <div id="main"> <div id="left"></di

  • 正则匹配密码只能是数字和字母组合字符串功能【php与js实现】

    本文实例讲述了正则匹配密码只能是数字和字母组合字符串功能.分享给大家供大家参考,具体如下: 密码要求: 1. 不能全部是数字 2. 不能全部是字母 3. 必须是数字和字母组合 4. 不包含特殊字符 5. 密码长度6-30位的字符串 /** * @desc get_pwd_strength()im:根据密码字符串判断密码结构 * @param (string)$mobile * return 返回:$msg */ function get_pwd_strength($pwd){ if (strle

随机推荐