javascript中使用正则表达式清理table样式的代码


Posted in Javascript onApril 01, 2020

项目中遇到这样的需求,一大段文章正文的html代码在手机中显示不全,原因是由于其它有table,而table表格中的tr/td都携带了从word中粘贴过来的样式,需要将这一大段的字符串中的table、tr、td中携带的样式清除掉,同时还不能破坏table结构,即要保留tr中的rowspan和td中的colspan属性。

html部分代码如下:

<p class="MsoNormal" align="left" style="text-align:left"><span lang="EN-US">
 <o:p>文字中华人民共和国文字中华人民共和国文字中华人民共和国</o:p>
 </span></p>
<table>
 <tbody>
 <tr style="height:13.5pt">
 <td width="117" style="width:88.0pt;border:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt;height:13.5pt"><p class="MsoNormal" align="center" style="text-align:center"><span style="font-family:宋体;color:#1F497D">项目<span lang="EN-US">
  <o:p></o:p>
  </span></span></p></td>
 <td width="137" style="width:103.0pt;border:solid windowtext 1.0pt;border-left:none;padding:0cm 5.4pt 0cm 5.4pt;height:13.5pt"><p class="MsoNormal" align="center" style="text-align:center"><span style="font-family:宋体;color:#1F497D">金额<span lang="EN-US">
  <o:p></o:p>
  </span></span></p></td>
 <td width="153" style="width:115.0pt;border:solid windowtext 1.0pt;border-left:none;padding:0cm 5.4pt 0cm 5.4pt;height:13.5pt"><p class="MsoNormal" align="center" style="text-align:center"><span style="font-family:宋体;color:#1F497D">经办人<span lang="EN-US">
  <o:p></o:p>
  </span></span></p></td>
 <td width="135" style="width:101.0pt;border:solid windowtext 1.0pt;border-left:none;padding:0cm 5.4pt 0cm 5.4pt;height:13.5pt"><p class="MsoNormal" align="center" style="text-align:center"><span style="font-family:宋体;color:#1F497D">是否有发票<span lang="EN-US">
  <o:p></o:p>
  </span></span></p></td>
 </tr>
 <tr style="height:13.5pt">
 <td width="117" style="width:88.0pt;border:solid windowtext 1.0pt;border-top:none;padding:0cm 5.4pt 0cm 5.4pt;height:13.5pt"><p class="MsoNormal" align="center" style="text-align:center"><span style="font-family:宋体;color:#1F497D">合计<span lang="EN-US">
  <o:p></o:p>
  </span></span></p></td>
 <td colspan="3" valign="bottom" nowrap="" style="width:103.0pt;border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt;height:13.5pt"><p class="MsoNormal" align="center" style="text-align:center"><span lang="EN-US" style="font-size:11.0pt;font-family:宋体;color:black">
  <o:p></o:p>
  </span></p></td>
 </tr>
 </tbody>
</table>
<p class="MsoNormal"><span style="font-family:宋体;color:#1F497D">文字中华人民共和国文字中华人民共和国文字中华人民共和国。</span><span lang="EN-US" style="color:#1F497D">
 <o:p></o:p>
 </span></p>

JS脚本如下:

/*
 *格式化内容,str即是html格式的字符串
 */
function formatContent(str){
 str=str.replace(/<\/?(html|head|title|meta|body)\b[^>]*>/ig,"");
 str=str.replace(/<table[^>]*>/ig,"<table>");
 return str;
 str=str.replace(/(<tr[^>]*>)/ig, function (a, b) {
 if(a.indexOf('rowspan')>-1){
  a=a.replace(/([a-z]+)="([^"]+)?"/ig,function(c,d,e){
  return d === 'rowspan' ? (d + '="' + e + '"') : '';
  })
  return a;
 }else{
  return '<tr>';
 }
 });
 str=str.replace(/(<td[^>]*>)/ig, function (a, b) {
 if(a.indexOf('colspan')>-1){
  a=a.replace(/([a-z]+)="([^"]+)?"/ig,function(c,d,e){
  return d === 'colspan' ? (d + '="' + e + '"') : '';
  })
  return a;
 }else{
  return '<td>';
 }
 });
 return str;
}

三水点靠木小编再给大家推荐一个

//表格替换 
str=str.replace(/<table[^<>]*>/ig, "<table>");
str=str.replace(/<thead[^<>]*>/ig, "<thead>");
str=str.replace(/<tbody[^<>]*>/ig, "<tbody>");
str=str.replace(/<tfoot[^<>]*>/ig, "<tfoot>");
str=str.replace(/<tr[^<>]*>/ig, "<tr>");
str=str.replace(/<th [^<>]*>/ig, "<th>");
str=str.replace(/<td[^<>]*>/ig, "<td>");
str=str.replace(/<th>\s*?<p>/ig, "<th>");
str=str.replace(/<\/p>\s*?<\/th>/ig, "</th>");
str=str.replace(/<td[^<>]*>\s*?<p>/ig, "<td>");
str=str.replace(/<td>\s*?<p>/ig, "<td>");
str=str.replace(/<\/p>\s*?<\/td>/ig, "</td>");

这样对于表格中所有出现的标签都进行了替换,因为现在都是用css控制的,基本上不用这么多参数什么的了,除非特殊的表格

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
捕获关闭窗口的脚本
Jan 10 Javascript
妙用Jquery的val()方法
Jun 27 Javascript
javascript 判断页面访问方式电脑或者移动端
Sep 19 Javascript
JavaScript中定时控制Throttle、Debounce和Immediate详解
Nov 17 Javascript
Reactjs实现通用分页组件的实例代码
Jan 19 Javascript
jquery拼接ajax 的json和字符串拼接的方法
Mar 11 Javascript
AngularJS中的拦截器实例详解
Apr 07 Javascript
详解Layer弹出层样式
Aug 21 Javascript
Angular 数据请求的实现方法
May 07 Javascript
微信小程序页面间传值与页面取值操作实例分析
Apr 30 Javascript
Vue 中 filter 与 computed 的区别与用法解析
Nov 21 Javascript
vue radio单选框,获取当前项(每一项)的value值操作
Sep 10 Javascript
jquery实现图片上传之前预览的方法
Jul 11 #Javascript
JavaScript使用RegExp进行正则匹配的方法
Jul 11 #Javascript
javascript中JSON对象与JSON字符串相互转换实例
Jul 11 #Javascript
javascript实现下班倒计时效果的方法(可桌面通知)
Jul 10 #Javascript
JavaScript清空数组元素的两种方法简单比较
Jul 10 #Javascript
JavaScript实现的类字典插入或更新方法实例
Jul 10 #Javascript
JavaScript模板引擎用法实例
Jul 10 #Javascript
You might like
php报表之jpgraph柱状图实例代码
2011/08/22 PHP
解析PHP中empty is_null和isset的测试
2013/06/29 PHP
Yii实现多按钮保存与提交的方法
2014/12/03 PHP
PHP基于MySQL数据库实现对象持久层的方法
2015/06/17 PHP
PHP单例模式简单用法示例
2017/06/23 PHP
JS Timing
2007/04/21 Javascript
细品javascript 寻址,闭包,对象模型和相关问题
2009/04/27 Javascript
在javascript中关于节点内容加强
2013/04/11 Javascript
jquery动态加载select下拉框示例代码
2013/12/10 Javascript
js中定义一个变量并判断其是否为空的方法
2014/05/13 Javascript
一个奇葩的最短的 IE 版本判断JS脚本
2014/05/28 Javascript
JS实现自动定时切换的简洁网页选项卡效果
2015/10/13 Javascript
深入理解JavaScript程序中内存泄漏
2016/03/17 Javascript
浅谈JS中的常用选择器及属性、方法的调用
2017/07/28 Javascript
js断点调试经验分享
2017/12/08 Javascript
微信小程序出现wx.getLocation再次授权问题的解决方法分析
2019/01/16 Javascript
详解TypeScript+Vue 插件 vue-class-component的使用总结
2019/02/18 Javascript
vue-cli配置flexible过程详解
2019/07/04 Javascript
vue 使用鼠标滚动加载数据的例子
2019/10/31 Javascript
Vue 实现简易多行滚动&quot;弹幕&quot;效果
2020/01/02 Javascript
详解Vue 单文件组件的三种写法
2020/02/19 Javascript
openLayer4实现动态改变标注图标
2020/08/17 Javascript
[51:43]OG vs LGD 2018国际邀请赛淘汰赛BO3 第五场 8.26
2018/08/30 DOTA
[46:20]CHAOS vs Alliacne 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python matplotlib 画图窗口显示到gui或者控制台的实例
2018/05/24 Python
使用anaconda的pip安装第三方python包的操作步骤
2018/06/11 Python
Windows 64位下python3安装nltk模块
2018/09/19 Python
Python综合应用名片管理系统案例详解
2020/01/03 Python
Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式
2020/05/11 Python
python3爬虫中多线程的优势总结
2020/11/24 Python
香港No.1得奖零食网:香港零食大王
2016/07/22 全球购物
Java基础面试题
2014/07/19 面试题
研讨会主持词
2014/04/02 职场文书
毕业实习证明(4篇)
2014/10/28 职场文书
环保守法证明
2015/06/24 职场文书
Python实战之疫苗研发情况可视化
2021/05/18 Python