HTML代码如下:
<div class="a">
<div class="b">引用</div>
                 1
<div class="c">
   <div class="a">
                      <div class="b">引用</div>
              <div class="c">2</div>
   </div>
</div>
</div>我已经写出了
   <div class="a">
                      <div class="b">引用</div>
              <div class="c">1</div>
   </div>
的正则,请问怎么把前面的html代码替换成UBB:
的格式?
要求能解析多重嵌套,不只两层

解决方案 »

  1.   

    function up(str){ str = str.replace(/</ig,'&lt;');
    str = str.replace(/>/ig,'&gt;');
    str = str.replace(/\n/ig,'<br />');
    str = str.replace(/\[code\](.+?)\[\/code\]/ig, function($1, $2) {return phpcode($2);}); str = str.replace(/\[hr\]/ig,'<hr />');
    str = str.replace(/\[\/(size|color|font|backcolor)\]/ig,'</font>');
    str = str.replace(/\[(sub|sup|u|i|strike|b|blockquote|li)\]/ig,'<$1>');
    str = str.replace(/\[\/(sub|sup|u|i|strike|b|blockquote|li)\]/ig,'</$1>');
    str = str.replace(/\[\/align\]/ig,'</p>');
    str = str.replace(/\[(\/)?h([1-6])\]/ig,'<$1h$2>'); str = str.replace(/\[align=(left|center|right|justify)\]/ig,'<p align="$1">');
    str = str.replace(/\[size=(\d+?)\]/ig,'<font size="$1">');
    str = str.replace(/\[color=([^\[\<]+?)\]/ig, '<font color="$1">');
    str = str.replace(/\[backcolor=([^\[\<]+?)\]/ig, '<font style="background-color:$1">');
    str = str.replace(/\[font=([^\[\<]+?)\]/ig, '<font face="$1">');
    str = str.replace(/\[list=(a|A|1)\](.+?)\[\/list\]/ig,'<ol type="$1">$2</ol>');
    str = str.replace(/\[(\/)?list\]/ig,'<$1ul>'); str = str.replace(/\[s:(\d+)\]/ig,function($1,$2){ return smilepath($2);});
    str = str.replace(/\[img\]([^\[]*)\[\/img\]/ig,'<img src="$1" border="0" />');
    str = str.replace(/\[url=([^\]]+)\]([^\[]+)\[\/url\]/ig, '<a href="$1">'+'$2'+'</a>');
    str = str.replace(/\[url\]([^\[]+)\[\/url\]/ig, '<a href="$1">'+'$1'+'</a>');
    return str;
    } function ubbtohtml(){
    str = up(document.getElementById("ubbsource").value);
    document.getElementById("htmlresult").value=str;
    }
      

  2.   

    ls的,我问的是html转ubb~~ thank you all the same
      

  3.   

    哦...看反了... function pattern(str){
    //str = str.replace(/(\r\n|\n|\r)/ig, '');
    str = str.replace(/<br[^>]*>/ig,'\n');
    str = str.replace(/<p[^>\/]*\/>/ig,'\n');
    //str = str.replace(/\[code\](.+?)\[\/code\]/ig, function($1, $2) {return phpcode($2);});
    str = str.replace(/\son[\w]{3,16}\s?=\s*([\'\"]).+?\1/ig,''); str = str.replace(/<hr[^>]*>/ig,'[hr]');
    str = str.replace(/<(sub|sup|u|strike|b|i|pre)>/ig,'[$1]');
    str = str.replace(/<\/(sub|sup|u|strike|b|i|pre)>/ig,'[/$1]');
    str = str.replace(/<(\/)?strong>/ig,'[$1b]');
    str = str.replace(/<(\/)?em>/ig,'[$1i]');
    str = str.replace(/<(\/)?blockquote([^>]*)>/ig,'[$1blockquote]'); str = str.replace(/<img[^>]*smile=\"(\d+)\"[^>]*>/ig,'[s:$1]');
    str = str.replace(/<img[^>]*src=[\'\"\s]*([^\s\'\"]+)[^>]*>/ig,'');
    str = str.replace(/<a[^>]*href=[\'\"\s]*([^\s\'\"]*)[^>]*>(.+?)<\/a>/ig,''+'$2'+'');
    //str = str.replace(/<h([1-6]+)([^>]*)>(.*?)<\/h\1>/ig,function($1,$2,$3,$4){return h($3,$4,$2);}); str = str.replace(/<[^>]*?>/ig, '');
    str = str.replace(/&amp;/ig, '&');
    str = str.replace(/&lt;/ig, '<');
    str = str.replace(/&gt;/ig, '>'); return str;
    }
    function htmltoubb(){
    str = pattern(document.getElementById("htmlsource").value);
    document.getElementById("ubbresult").value=str;
    }
      

  4.   

    你先看看我的问题再回答吧 thank you all the same
      

  5.   

    <html> 
    <head> 
    <title>用户注册 </title> 
    <style type="text/css"> 
    <!-- 
    body { 
    background-image: url(3.jpg); 

    --> 
    </style> 
    </head> 
    <script language="javascript"> 
      function pattern(str){
                str = str.replace(/(\r\n|\n|\r)/ig, '');
                str = str.replace(/\s\s+/ig, '');
                str = str.replace(/<br[^>]*>/ig,'\n');
                str = str.replace(/<p[^>\/]*\/>/ig,'\n');
                //str = str.replace(/\[code\](.+?)\[\/code\]/ig, function($1, $2) {return phpcode($2);});    
                str = str.replace(/\son[\w]{3,16}\s?=\s*([\'\"]).+?\1/ig,'');            str = str.replace(/<hr[^>]*>/ig,'[hr]');
                str = str.replace(/<(sub|sup|u|strike|b|i|pre)>/ig,'[$1]');
                str = str.replace(/<\/(sub|sup|u|strike|b|i|pre)>/ig,'[/$1]');
                str = str.replace(/<(\/)?strong>/ig,'[$1b]');
                str = str.replace(/<(\/)?em>/ig,'[$1i]');
                str = str.replace(/<(\/)?blockquote([^>]*)>/ig,'[$1blockquote]');            str = str.replace(/<img[^>]*smile=\"(\d+)\"[^>]*>/ig,'[s:$1]');
                str = str.replace(/<img[^>]*src=[\'\"\s]*([^\s\'\"]+)[^>]*>/ig,'');
                str = str.replace(/<a[^>]*href=[\'\"\s]*([^\s\'\"]*)[^>]*>(.+?)<\/a>/ig,''+'$2'+'');
                str = str.replace(/<div class=\"c\">(.*)<\/div>/ig,"$1");alert(str)
                str = str.replace(/<div class=\"b\">引用 <\/div>/ig,'');
                //str = str.replace(/<h([1-6]+)([^>]*)>(.*?)<\/h\1>/ig,function($1,$2,$3,$4){return h($3,$4,$2);});            str = str.replace(/<[^>]*?>/ig, '');
                str = str.replace(/&amp;/ig, '&');
                str = str.replace(/&lt;/ig, '<');
                str = str.replace(/&gt;/ig, '>');            return str;
            }
        function htmltoubb(){
            str = pattern(document.getElementById("htmlsource").value);
            document.getElementById("ubbresult").value=str;
        }</script> <body>
    <textarea id="htmlsource" style="width:500;height:300"></textarea><br>
    <textarea id="ubbresult"  style="width:500;height:300"></textarea>
    <button onclick="htmltoubb()">aaa</button>
    </body> 
    </html> 
    你就不能让我懒一下吗...
      

  6.   


    // 没有测试过
    var reg = /<div class="a">\s*<div class="b">引用<\/div>\s*<div class="c">\s*((?:(?!<div class="a">)[\d\D])*?)\s*<\/div>\s*<\/div>/;
    while (reg.test(str)) {
    str = str.replace(reg, "");
    }