读书人

求一段正则式,该怎么解决

发布时间: 2012-04-09 13:41:24 作者: rapoo

求一段正则式
<TABLE style="WIDTH: 270pt; BORDER-COLLAPSE: collapse" border=0 cellSpacing=0 cellPadding=0 width=360>
<COLGROUP>
<COL style="WIDTH: 54pt" span=5 width=72>
<TBODY>
<TR style="HEIGHT: 13.5pt; mso-height-source: userset" height=18>
<TD style="BORDER-BOTTOM: windowtext 0.5pt solid; BORDER-LEFT: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; WIDTH: 108pt; HEIGHT: 13.5pt; BORDER-TOP: windowtext 0.5pt solid; BORDER-RIGHT: windowtext 0.5pt solid" class=xl67 height=18 width=144 colSpan=2><FONT face=宋体>单位</FONT></TD>
<TD style="BORDER-BOTTOM: windowtext 0.5pt solid; BORDER-LEFT: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; WIDTH: 54pt; BORDER-TOP: windowtext 0.5pt solid; BORDER-RIGHT: windowtext 0.5pt solid" class=xl68 rowSpan=2 width=72><FONT face=宋体>人次</FONT></TD>
<TD style="BORDER-BOTTOM: windowtext 0.5pt solid; BORDER-LEFT: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; WIDTH: 108pt; BORDER-TOP: windowtext 0.5pt solid; BORDER-RIGHT: windowtext 0.5pt solid" class=xl66 rowSpan=2 width=144 colSpan=2><FONT face=宋体>备注</FONT></TD></TR>
<TR style="HEIGHT: 13.5pt" height=18>
<TD style="BORDER-BOTTOM: windowtext 0.5pt solid; BORDER-LEFT: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; HEIGHT: 13.5pt; BORDER-TOP: windowtext; BORDER-RIGHT: windowtext 0.5pt solid" class=xl65 height=18><FONT face=宋体>名称</FONT></TD>
<TD style="BORDER-BOTTOM: windowtext 0.5pt solid; BORDER-LEFT: windowtext; BACKGROUND-COLOR: transparent; BORDER-TOP: windowtext; BORDER-RIGHT: windowtext 0.5pt solid" class=xl65><FONT face=宋体>地址</FONT></TD></TR></TBODY></TABLE>
================================================================
现在求一段正则表达式,能够使上述输出为
<table>
<tbody>
<tr>
<td colSpan="2">单位</td>
<td rowSpan="2">人次</td>
<td rowSpan="2" colSpan="2">备注</td>
</tr>
<tr>
<td>名称</td>
<td>地址</td>
</tr>
</tbody>
</table>

[解决办法]
/<table([^>]*?)>(.*?)<tbody>\n<tr([^>]*?)>(\n<td([^>]*?)>(<([^>]*?)>).*?<([^>]*?)><\/td>)+<\/tr>\n<tr([^>]*?)>(\n<td([^>]*?)>(<([^>]*?)>).*?<([^>]*?)><\/td>)+<\/tr><\/tbody><\/table>/gi
[解决办法]

HTML code
<script type="text/javascript">var html = '<TABLE style="WIDTH: 270pt; BORDER-COLLAPSE: collapse" border=0 cellSpacing=0 cellPadding=0 width=360>'+'<COLGROUP>'+'<COL style="WIDTH: 54pt" span=5 width=72>'+'<TBODY>'+'<TR style="HEIGHT: 13.5pt; mso-height-source: userset" height=18>'+'<TD style="BORDER-BOTTOM: windowtext 0.5pt solid; BORDER-LEFT: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; WIDTH: 108pt; HEIGHT: 13.5pt; BORDER-TOP: windowtext 0.5pt solid; BORDER-RIGHT: windowtext 0.5pt solid" class=xl67 height=18 width=144 colSpan=2><FONT face=宋体>单位</FONT></TD>'+'<TD style="BORDER-BOTTOM: windowtext 0.5pt solid; BORDER-LEFT: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; WIDTH: 54pt; BORDER-TOP: windowtext 0.5pt solid; BORDER-RIGHT: windowtext 0.5pt solid" class=xl68 rowSpan=2 width=72><FONT face=宋体>人次</FONT></TD>'+'<TD style="BORDER-BOTTOM: windowtext 0.5pt solid; BORDER-LEFT: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; WIDTH: 108pt; BORDER-TOP: windowtext 0.5pt solid; BORDER-RIGHT: windowtext 0.5pt solid" class=xl66 rowSpan=2 width=144 colSpan=2><FONT face=宋体>备注</FONT></TD></TR>'+'<TR style="HEIGHT: 13.5pt" height=18>'+'<TD style="BORDER-BOTTOM: windowtext 0.5pt solid; BORDER-LEFT: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; HEIGHT: 13.5pt; BORDER-TOP: windowtext; BORDER-RIGHT: windowtext 0.5pt solid" class=xl65 height=18><FONT face=宋体>名称</FONT></TD>'+'<TD style="BORDER-BOTTOM: windowtext 0.5pt solid; BORDER-LEFT: windowtext; BACKGROUND-COLOR: transparent; BORDER-TOP: windowtext; BORDER-RIGHT: windowtext 0.5pt solid" class=xl65><FONT face=宋体>地址</FONT></TD></TR></TBODY></TABLE>'var regex = /<\/?(table|td|tr|tbody)[^>]*>|[^>]+(?=<)/givar result="";var m ;while(m = regex.exec(html)){    var reg = / ((?!(colspan|rowspan))[^>])+/ig    result += m[0].replace(reg," ")}alert(result)</script> 

读书人网 >JavaScript

热点推荐