<textarea id="txt" name="txt" cols="81" rows="14" wrap="off"><FORM name="f1" action=".*">
/*
<INPUT type="hidden" name="r" value="r">
*/
<INPUT type="hidden" name="f" value="f">
dd /*
<INPUT type="submit" value="xxx"></FORM>
*/
<td width="50%">
//<br id="b1">
<br id="b2">
#<br id="b3">
<br id="b4">
xxx ;<br id="b5">
<br id="b6">
'<br id="b7">
<br id="b8">
abcd #<br id="b9">
<br id="b10"></textarea>如上...要求用5个正则依次 replace [其他split之类的方法不考虑]掉/*...*/之间的内容; 每一行的// [包括//前的空白字符] 之后的内容 (# ; '同)...
即最终得到如下结果...要求代码兼容opera9.x...其他浏览器可以无视...<FORM name="f1" action=".*">
<INPUT type="hidden" name="f" value="f">
dd
<td width="50%">
<br id="b2">
<br id="b4">
xxx
<br id="b6">
<br id="b8">
abcd
<br id="b10">

解决方案 »

  1.   

    额...我的tab被解析成4个空格了...-__-!!
      

  2.   


    var str = '<textarea id="txt" name="txt" cols="81" rows="14" wrap="off"><FORM name="f1" action=".*"> \
    /* \
    <INPUT type="hidden" name="r" value="r"> \
    */ \
    <INPUT type="hidden" name="f" value="f"> \
    dd /* \
    <INPUT type="submit" value="xxx"></FORM> \
    */ \
    <td width="50%"> \
        //<br id="b1"> \
    <br id="b2"> \
        #<br id="b3"> \
    <br id="b4"> \
    xxx ;<br id="b5"> \
    <br id="b6"> \
    \'<br id="b7"> \
    <br id="b8"> \
    abcd #<br id="b9"> \
    <br id="b10"></textarea>';
    str = str.replace(/\/\*(?:(?:\r\n|\n)?.*)(?:\r\n|\n)?\*\/|\/\/.*(?:\r\n|\n)?/g, '')
    alert(str);
      

  3.   

    漏了#;'
    str = str.replace(/\/\*(?:(?:\r\n|\n)?.*)(?:\r\n|\n)?\*\/|(?:\/\/|#|;|').*(?:\r\n|\n)?/g, '')
      

  4.   

    修正bugvar str = '<textarea id="txt" name="txt" cols="81" rows="14" wrap="off"><FORM name="f1" action=".*">\n \
    /*\n \
    <INPUT type="hidden" name="r" value="r">\n \
    */\n \
    <INPUT type="hidden" name="f" value="f">\n \
    dd /*\n \
    <INPUT type="submit" value="xxx"></FORM>\n \
    */\n \
    <td width="50%">\n \
        //<br id="b1">\n \
    <br id="b2">\n \
        #<br id="b3">\n \
    <br id="b4">\n \
    xxx ;<br id="b5">\n \
    <br id="b6">\n \
    \'<br id="b7">\n \
    <br id="b8">\n \
    abcd #<br id="b9">\n \
    <br id="b10"></textarea>';
    alert(str);
    str = str.replace(/\/\*\s*(?:(?:\r\n|\n)?.*)(?:\r\n|\n)?\s*\*\/|(?:\/\/|#|;|').*(?:\r\n|\n)?/g, '\n')
    alert(str);
      

  5.   

    额...看来我一开始表述的有问题...
    不是5个正则...而是5个replace....我想看看每一种字符的正则都是怎么写的....并不是一次性全部匹配后再replace...楼上的结果出来之后是<FORM name="f1" action=".*"><INPUT type="hidden" name="f" value="f">
    dd 
    <td width="50%">
        <br id="b2">
        <br id="b4">
    xxx <br id="b6">
    <br id="b8">
    abcd <br id="b10">关键字前边的空格没移掉...还有就是全都多移除了一个换行符...比如这个 [xxx <br id="b6">] 的结果应该是 [xxx\n<br id="b6">] 来的...多删一个换行会影响代码结构....
      

  6.   


    var val = document.getElementById("txt").value;
    val = val.replace(/(\s*\/\*(.|\n)*?\*\/)|(\s*(\/\/|\#|\;|\').*?(?=\n))/ig, "");
    document.getElementById("txt").value = val;
      

  7.   

    javascript:alert(document.getElementById('txt').value.replace(/(\s*\/\*(.|\n)*?\*\/)|(\s*(\/\/|\#|\;|\').*?(?=\n))/ig, ''));这个...得到的结果跟原来的值一样...没变化阿...
      

  8.   

    多加一次str = str.replace(/\/\*\s*(?:(?:\r\n|\n)?.*)(?:\r\n|\n)?\s*\*\/|(?:\/\/|#|;|').*(?:\r\n|\n)?/g, '\n');
    str = str.replace(/(?:\s*(?:\r\n|\n)\s*)+/g,'\n');或改为str = str.replace(/\/\*\s*(?:(?:\r\n|\n)?.*)(?:\r\n|\n)?\s*\*\/|(?:\/\/|#|;|').*/g, '\n');
      

  9.   

    我测试是可以替换掉.
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>无标题文档</title>
    <script type="text/javascript">
    window.onload = function(){
    var val = document.getElementById("txt").value;
    val = val.replace(/(\s*\/\*(.|\n)*?\*\/)|(\s*(\/\/|\#|\;|\').*?(?=\n))/ig, "");
    document.getElementById("dest").value = val;
    };
    </script>
    </head>
    <body>
    <textarea id="txt" name="txt" cols="81" rows="14" wrap="off">
        <FORM name="f1" action=".*">
        /*
        <INPUT type="hidden" name="r" value="r">
        */
        <INPUT type="hidden" name="f" value="f">
        dd /*
        <INPUT type="submit" value="xxx"></FORM>
        */
        <td width="50%">
            //<br id="b1">
        <br id="b2">
            #<br id="b3">
        <br id="b4">
        xxx ;<br id="b5">
        <br id="b6">
        '<br id="b7">
        <br id="b8">
        abcd #<br id="b9">
        <br id="b10">
    </textarea>
    <textarea id="dest" name="dest" cols="81" rows="14" wrap="off">
    </textarea>
    </body>
    </html>
      

  10.   

    javascript:alert(document.getElementById('txt').value.replace(/\/\*\s*(?:(?:\r\n|\n)?.*)(?:\r\n|\n)?\s*\*\/|(?:\/\/|#|;|').*/g, ''));不知道为啥我用replace(/\/\*.*\*\//g,'')移不掉那个/*...*/之间的内容...这么写有错么??
    恩...就先这样吧...回去对着教程再慢慢研究去...
      

  11.   


    不知道为啥你的代码在ff里是有效的...但在opera里无效...而且不报错...我也不知道问题出在哪...
      

  12.   

    那我用这个匹配为啥也不行呢.../\/\*(\s*|\S*)\*\//g
    应该用啥来匹配/*...*/阿....