<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>

解决方案 »

  1.   

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

  2.   

    <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)[^>]*>|[^>]+(?=<)/gi
    var result="";
    var m ;
    while(m = regex.exec(html))
    {
        var reg = / ((?!(colspan|rowspan))[^>])+/ig
        result += m[0].replace(reg," ")
    }
    alert(result)
    </script>