有但类似html代码,
                                 <html>
<body>
<div><div><p>test,test,test<p/></div></div>
<a><a href="www.baidu.com">testtestest</a></a>
<p><p><p>test test test</p></p></p>
</body>
</html>                           要把里面的 <div><div><p>test,test,test<p/></div></div>  替换成<div><p>test,test,test<p/></div>  
       <a><a href="www.baidu.com">testtestest</a></a>  替换成<a href="www.baidu.com">testtestest</a>
        <p><p><p>test test test</p></p></p>   替换成  <p>test test test</p>有没有好的正则,或好的解决方法,  请大虾们指点
    
                                                       

解决方案 »

  1.   

    你的html怎么得到???数据据库里提出来的?
      

  2.   


    //粗略的匹配了下
    <script type="text/javascript">
    <!--
        var str='<html><body><div><div><p>test,test,test</p></div></div><a><a href="www.baidu.com">testtestest</a></a><p><p><p>test test test</p></p></p></body></html>';
    var reg=/<[^>/]+?>(?:[^<>]*?)<\/[^>]+?>/g;
    var arr = [];
    while((result = reg.exec(str)) != null){
    arr.push(result[0])
    }
    alert(arr)
    //-->
    </script>
      

  3.   

    大致写了一下
    <script>
    var str = '<html>'
        +'<body>'
            +'<div><div><p>test,test,test<p/></div></div>'
           +' <a><a href="www.baidu.com">testtestest</a></a>'
         +'   <p><p><p>test test test</p></p></p>'
       +' </body>'
    +'</html> ';var arr = ["div","a","p"];str = deleteDulti(str,arr);
    alert(str);//删除重复标签
    function deleteDulti(v,array){
    var len = v.length;
    for(var i=0;i<array.length;i++){
    var re = eval("\/<("+array[i]+")\\b[^>]*><\\1\\b([^>]*)>(.*)<\\\/\\1><\\\/\\1>\/gi");
    do{
    len = v.length;
    v = v.replace(re,"<$1 $2>$3</$1>");
    }while(v.length!=len);
    }
    return v;
    }
    </script>
      

  4.   

    去掉的太多了   多个 象多个<div> 标签要留一个
      

  5.   

    <div> <div> <p>test,test,test <p/> </div> </div>  替换成 <div> <p>test,test,test <p/> </div>  这里div的个数是固定的还是任意的?
      

  6.   

    任意的  也有可能是其它标签  不是div
      

  7.   

    这是你自己的需求,你自己不知道吗?
    你感觉有可能会出现重复的标签就加入arr数组,传给函数,它会帮你处理的
    LZ的需求应该是任意的吧^_^
      

  8.   


    var mat=/(<([^> \/]+)([^>\/]*)>)(<\2([^>]*)>)*(.*?)(<\/\2>)\7*/gvar str='<html><body><div><div id="adsfasdf"><p>test,test,test<p></div></div></div>\
            <a><a href="www.baidu.com">testtestest</a></a>\
            <p><p><p>test test test</p></p></p></body></html>';str=str.replace(/.*?<body[^>]*>(.*?)<\/body>.*/,'$1')var ret=str.replace(mat,function(z,a,b,c,d,e,f,g)
    { var attr=e || c;
              attr=attr ? ' '+attr :'';
     return '<'+b+attr+'>'+f+g
    });
    alert(ret)
      

  9.   

    try...<textarea id="source" rows="10" cols="100"></textarea><br />
    <input type="Submit" value="处理" onclick="opt();"><br />
    <textarea id="result" rows="10" cols="100"></textarea><br /> 
    <script type="text/javascript"> 
    function opt()
    {
        var str = document.getElementById("source").value;
        var reg = /<([a-z]+)[^>]*>(?:\s*<\1([^>]*)>)+((?:(?!<\/\1\b)[\s\S])*)(\s*<\/\1>)+/;
        do
        {
            len = str.length;
            str = str.replace(reg,"<$1$2>$3</$1>");
        }
        while(str.length!=len);
        document.getElementById("result").value = str;
    }
    </script> 
      

  10.   

    漏了两个参数<textarea id="source" rows="10" cols="100"></textarea><br />
    <input type="Submit" value="处理" onclick="opt();"><br />
    <textarea id="result" rows="10" cols="100"></textarea><br /> 
    <script type="text/javascript"> 
    function opt()
    {
        var str = document.getElementById("source").value;
        var reg = /<([a-z]+)[^>]*>(?:\s*<\1([^>]*)>)+((?:(?!<\/\1\b)[\s\S])*)(\s*<\/\1>)+/ig;
        do
        {
            len = str.length;
            str = str.replace(reg,"<$1$2>$3</$1>");
        }
        while(str.length!=len);
        document.getElementById("result").value = str;
    }
    </script> 
      

  11.   

    汗,又用插入源代码方式,被系统自动加空格了js不是很熟,借用了lihui_shine一部分代码修改而成<textarea id="source" rows="10" cols="100"></textarea><br />
    <input type="Submit" value="处理" onclick="opt();"><br />
    <textarea id="result" rows="10" cols="100"></textarea><br /> 
    <script type="text/javascript"> 
    function opt()
    {
        var str = document.getElementById("source").value;
        var reg = /<([a-z]+)[^>]*>(?:\s*<\1([^>]*)>)+((?:(?!<\/\1\b)[\s\S])*)(\s*<\/\1>)+/ig;
        do
        {
            len = str.length;
            str = str.replace(reg,"<$1$2>$3</$1>");
        }
        while(str.length!=len);
        document.getElementById("result").value = str;
    }
    </script>