问题自己解决  可能办法笨点<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title> New Document </title>
<meta name="Generator" content="EditPlus">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
</head><body>
<script language="JavaScript">
<!--
var html="";
html='<TD style="BORDER-RIGHT: windowtext 1pt solid;m:1; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 86.8pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 46.5pt; msoborderalt: solid windowtext .5pt; mso-diagonal-down: .5pt solid windowtext; " vAlign=top width=116>';
html+='\n<TD style="BORDER-RIGHT: windowtext 1pt solid;m:1; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 86.8pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 46.5pt; mso-diagonal-up: .5pt solid windowtext; msoborderalt: solid windowtext .5pt; mso-diagonal-down: .5pt solid windowtext; mso-diagonal-up: .5pt solid windowtext" vAlign=top width=116>';
html+='\n<TD style="BORDER-RIGHT: windowtext 1pt solid;m:1; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 86.8pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 46.5pt; mso-diagonal-up: .5pt solid windowtext; msoborderalt: solid windowtext .5pt;" vAlign=top width=116>';
html+='\n<TD style="BORDER-RIGHT: windowtext 1pt solid;m:1; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 86.8pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 46.5pt; msoborderalt: solid windowtext .5pt;" vAlign=top width=116>';
html+='\n\n<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 85.8pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 70.6pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; mso-diagonal-up: .5pt solid windowtext" vAlign=top width=114>';function window.onload(){
text1.innerText=html;
}function doclick(){
html=text1.innerText html = html.replace(/<(\w[^>]*) style="([^"]*)"(?: style2="(?:[^"]*)"|)([^>]*)>(?:<diagonal([^>]*)\/>|)/gi,"<$1 style=\"$2\" style2=\"\"$3><diagonal/>");
html = html.replace(/<(\w[^>]*) style="(.*?)(height:[^;|"]*)(?:;|)(.*?)" style2="([^"]*)"([^>]*)>/gi,"<$1 style=\"$2$4\" style2=\"$5$3;\"$6>");
html = html.replace(/<(\w[^>]*) style="(.*?)(mso\-diagonal\-(down):[^;|"]*)(?:;|)(.*?)" style2="([^"]*)"([^>]*)><diagonal([^>]*)\/>/gi,"<$1 style=\"$2$5\" style2=\"$6$3;\"$7><diagonal$8 $4/>");
html = html.replace(/<(\w[^>]*) style="(.*?)(mso\-diagonal\-(up):[^;|"]*)(?:;|)(.*?)" style2="([^"]*)"([^>]*)><diagonal([^>]*)\/>/gi,"<$1 style=\"$2$5\" style2=\"$6$3;\"$7><diagonal$8 $4/>"); html = html.replace(/<(\w[^>]*) style="([^"]*)"([^>]*)/gi,"<$1$3") ; // Remove Style attributes 
html = html.replace(/<diagonal>/gi,"");
html = html.replace(/style2=/gi,"style=");
text1.innerText=html;
}
//-->
</script>
<input type=button value="提交" onclick="doclick()">
<br><br><br>
<div id=text1></div>
</body>
</html>看看高手还有没有更高的解决办法  期待优化中

解决方案 »

  1.   

    哇塞。
    得到分数可真不容易啊!耗费了大半的精力:
    //去右空格; 
    function rtrim(s){ 
    return s.replace( /\s*$/,""); 

    // 适当调整字符串.
    function fmt(str) {
    // 获取 style 之间的所有内容
    var srp = /(<TD[ ]*?style=(\"|\'))(.*?)((\2).*)/ig;
    var g = srp.exec(str);

    var result;
    if (g)
    {
    var begin = g[1];
    var s = g[3];
    var end = g[4] ;

    // 去除右边的空格!
    s = rtrim(s);
    // 在右边添加分号!
    s = s + ';'; result = begin + s + end;
    } return result;
    } // 进行正则的替换。
    function regp(str) {
    var s = fmt(str);
    var result; 
    if (s)
    {
    // 构造正则表达式
    //regex = /(<TD[ ]*?style=(\"|\'))(.*?((mso-diagonal-down:.*?;)|(mso-diagonal-up:.*?;))){0,2}.*?(\2.*)/ig;
    //regex = /(<TD[ ]*?style=(\"|\'))(.*?((mso-diagonal-down:.*?;)|(mso-diagonal-up:.*?;))){0,2}.*?(\2.*)/ig;

    // 提取 mso-diagonal-down 属性
    regex_down = /style=(\"|\').*?(mso-diagonal-down:.*?;).*?(\1)/ig;
    var g_down = regex_down.exec(s);
    var down ;
    if (g_down)
    {
    down = g_down[2];
    }

    // 提取 mso-diagonal-up: 属性
    regex_up = /style=(\"|\').*?(mso-diagonal-up:.*?;).*?(\1)/ig;
    var g_up = regex_up.exec(s);
    var up ;
    if (g_up)
    {
    up = g_up[2];
    } // 获取其他的属性
    var regex = /(<TD[ ]*?style=(\"|\'))(.*?)((\2).*)/ig;
    g = regex.exec(s);
    var begin = g[1];
    var end = g[4] ; if (down)
    {
    begin = begin + down
    }
    if (up)
    {
    begin = begin + up
    }

    result = begin + end;
    } return result;
    }

    window.onload = function() {

    var str = '<TD style="BORDER-RIGHT: windowtext 1pt solid;m:1; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 86.8pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 46.5pt; mso-diagonal-up: .5pt solid windowtext; msoborderalt: solid windowtext .5pt; mso-diagonal-down: .5pt solid windowtext; BORDER-TOP: windowtext 1pt solid; mso-diagonal-up: .5pt solid windowtext; PADDING-RIGHT: 5.4pt" vAlign=top width=116>' ;

    var result = regp(str); if (result)
    {
    alert('获取最后的结果:' + result );
    }
    else 
    {
    alert('不能够获取匹配');
    }

    }直接将代码放到 js 中进行执行即可。这里用了多个正则表达式,开始时准备用一个正则表达式,但实力有限,一个正则还要研究,所以就用了多个正则来处理。
      

  2.   

    挣扎啊。
    学了这么久,总算亲自尝试了一下去写正则表达式。刚刚挣扎了一番,将多个正则表达式的处理改为了利用一个正则表达式来处理:
    //去右空格; 
    function rtrim(s){ 
    return s.replace( /\s*$/,""); 
    }  // 适当调整字符串.
    function fmt(str) {
    // 获取 style 之间的所有内容
    var srp = /(<TD[ ]*?style=(\"|\'))(.*?)((\2).*)/ig;
    var g = srp.exec(str);

    var result;
    if (g)
    {
    var begin = g[1];
    var s = g[3];
    var end = g[4] ;

    // 去除右边的空格!
    s = rtrim(s);
    // 在右边添加分号!
    s = s + ';'; result = begin + s + end;
    } return result;
    }
    function oneregep(str) {
    var s = fmt(str);
    var result; 
    if (s)
    {
    // 构造正则表达式
    regex = /(<TD[ ]*?style=(\"|\'))((.*?(mso-diagonal-down:.*?;))|(.*(mso-diagonal-up:.*?;))){0,2}.*?(\2.*)/ig;
    //regex = /(<TD[ ]*?style=(\"|\'))(.*?((mso-diagonal-down:.*?;)|(mso-diagonal-up:.*?;))){0,2}.*?(\2.*)/ig;
    g = regex.exec(s); var begin = g[1];
    var down = g[5];
    var up = g[7];
    var end = g[8] ;

    if (down)
    {
    begin = begin + down;
    }
    if (up)
    {
    begin = begin + up;
    }
    result = begin + end;
    }
    return result;
    }

    window.onload = function() {

    var str = '<TD style="BORDER-RIGHT: windowtext 1pt solid;m:1; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 86.8pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 46.5pt; mso-diagonal-up: .5pt solid windowtext; msoborderalt: solid windowtext .5pt; mso-diagonal-down: .5pt solid windowtext; BORDER-TOP: windowtext 1pt solid; mso-diagonal-up: .5pt solid windowtext; PADDING-RIGHT: 5.4pt" vAlign=top width=116>' ;


    var result = oneregep(str); if (result)
    {
    alert('获取最后的结果:' + result );
    }
    else 
    {
    alert('不能够获取匹配');
    }
    }
      

  3.   

    实际上我是要替换  一段html其中有N个TD  不知道判断有和没有还要对应替换成相应的格式
    不过还是感谢楼上的