内容:<TD style="BORDER-RIGHT: medium none" vAlign=top width=64 windowtext solid .5pt 5.4pt; .5pt; colspan='2' rowspan="3" mso-border-alt: BORDER-BOTTOM: BORDER-LEFT: BORDER-TOP: transparent; BACKGROUND-COLOR: HEIGHT: solid; 1pt 0cm; PADDING-TOP: WIDTH: PADDING-BOTTOM: PADDING-LEFT: PADDING-RIGHT: 1.95pt; mso-border-top-alt: 47.85pt; #ece9d8;>想通过正则表达式得到:<TD width="64" colspan="2" rowspan="3">谢谢啦!!!
var str='<TD'
s.replace(/(width|colspan|rowspan)=[^ ]+/gi,function($1){str+=' '+$1;});
str+='>';
alert(str)
这样处理对于只有这一个TD是起作用的,但实际中是有多个TD组成的一个TABLE就不行了。
var s='<table><tr><TD style="BORDER-RIGHT: medium none" vAlign=top width=64 windowtext solid .5pt 5.4pt; .5pt; colspan="2" rowspan="3" mso-border-alt: BORDER-BOTTOM:BORDER-LEFT: BORDER-TOP: transparent; BACKGROUND-COLOR: HEIGHT: solid; 1pt 0cm; PADDING-TOP: WIDTH: PADDING-BOTTOM: PADDING-LEFT: PADDING-RIGHT: 1.95pt; mso-border-top-alt: 47.85pt; #ece9d8;></td><TD style="BORDER-RIGHT: medium none" vAlign=top width=64 windowtext solid .5pt 5.4pt; .5pt; colspan="2" rowspan="3" mso-border-alt: BORDER-BOTTOM:BORDER-LEFT: BORDER-TOP: transparent; BACKGROUND-COLOR: HEIGHT: solid; 1pt 0cm; PADDING-TOP: WIDTH: PADDING-BOTTOM: PADDING-LEFT: PADDING-RIGHT: 1.95pt; mso-border-top-alt: 47.85pt; #ece9d8;></td><TD style="BORDER-RIGHT: medium none" vAlign=top width=64 windowtext solid .5pt 5.4pt; .5pt; colspan="2" rowspan="3" mso-border-alt: BORDER-BOTTOM:BORDER-LEFT: BORDER-TOP: transparent; BACKGROUND-COLOR: HEIGHT: solid; 1pt 0cm; PADDING-TOP: WIDTH: PADDING-BOTTOM: PADDING-LEFT: PADDING-RIGHT: 1.95pt; mso-border-top-alt: 47.85pt; #ece9d8;></td></tr></table><table><tr><TD style="BORDER-RIGHT: medium none" vAlign=top width=64 windowtext solid .5pt 5.4pt; .5pt; colspan="2" rowspan="3" mso-border-alt: BORDER-BOTTOM:BORDER-LEFT: BORDER-TOP: transparent; BACKGROUND-COLOR: HEIGHT: solid; 1pt 0cm; PADDING-TOP: WIDTH: PADDING-BOTTOM: PADDING-LEFT: PADDING-RIGHT: 1.95pt; mso-border-top-alt: 47.85pt; #ece9d8;></td><TD style="BORDER-RIGHT: medium none" vAlign=top width=64 windowtext solid .5pt 5.4pt; .5pt; colspan="2" rowspan="3" mso-border-alt: BORDER-BOTTOM:BORDER-LEFT: BORDER-TOP: transparent; BACKGROUND-COLOR: HEIGHT: solid; 1pt 0cm; PADDING-TOP: WIDTH: PADDING-BOTTOM: PADDING-LEFT: PADDING-RIGHT: 1.95pt; mso-border-top-alt: 47.85pt; #ece9d8;></td><TD style="BORDER-RIGHT: medium none" vAlign=top width=64 windowtext solid .5pt 5.4pt; .5pt; colspan="2" rowspan="3" mso-border-alt: BORDER-BOTTOM:BORDER-LEFT: BORDER-TOP: transparent; BACKGROUND-COLOR: HEIGHT: solid; 1pt 0cm; PADDING-TOP: WIDTH: PADDING-BOTTOM: PADDING-LEFT: PADDING-RIGHT: 1.95pt; mso-border-top-alt: 47.85pt; #ece9d8;></td></tr></table>';
var result = ""
var m = s.match(/<td[^>]+>/ig); for(var i = 0 ; i < m.length ; i ++)
{
var str='<TD'
m[i].replace(/(width|colspan|rowspan)=[^ ]+/gi,function($1){str+=' '+$1;});
str+='>';
result+=str+"\n";
}alert(result)
分解处理的方法是可以,但是还需要保留tabel和tr。其实所要实现的就是对一个table中的td中的一些没用的样式进行过滤,但是样式太多没法控制,只要必须的几种,想通过正则来直接过滤。
var s='<TD style="BORDER-RIGHT: medium none" vAlign=top width=64 windowtext solid .5pt 5.4pt; .5pt; colspan=2 rowspan="3" mso-border-alt: BORDER-BOTTOM: BORDER-LEFT: BORDER-TOP: transparent; BACKGROUND-COLOR: HEIGHT: solid; 1pt 0cm; PADDING-TOP: WIDTH: PADDING-BOTTOM: PADDING-LEFT: PADDING-RIGHT: 1.95pt; mso-border-top-alt: 47.85pt; #ece9d8;>';html = s.replace(/<(\w[^>]*) width=[^ ]+/gi, "<$1");alert(s + "\n"+ html);
</script>这样是可以去掉指定的样式的,但是保留指定的样式试了很长时间也不行。
var regex = /(width|colspan|rowspan)=[^ ]+/gi
var regex1 = /(\][^\<\>]+?\[)|(\].+?(?=\>))|(\s(?=\w).+?\[)/g
s = s.replace(regex,function(word)
{
return "["+word+"]";
}
)
var result = s.replace(regex1," ")
alert(result);