<select multiple="multiple" size="3" name="aaa">
    <option value="a" selected="selected">a</option>
    <option value="b">b</option>
    <option value="c">c</option>
</select> sdadasd<select size="3" name="adassa">
    <option value="1" selected="selected">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
</select> 
我希望写一个正则能匹配select标签和它的内容,不包含标签外的内容。然后可以用match()来返回两个数组

解决方案 »

  1.   

    /<select\s+[\s\d\w\u4e00-\u9fa5<"=_\/>]*<\/select>/ig;
    上面是我写的,但是不对,它把两个select做为一个返回了。
    谁能帮下我。谢谢
      

  2.   

    select里面只能包含数字,字母,空格,下划线,等号,大于号,小于号,双引号,汉字
      

  3.   


    <script type="text/javascript">
    <!--
    var str = '<select multiple="multiple" size="3" name="aaa">'
    + '<option value="a" selected="selected">a</option>'
    + '<option value="b">b</option>'
    + '<option value="c">c</option>'
    + '</select>'
    + 'sdadasd'  + '<select size="3" name="adassa">'
     + '<option value="1" selected="selected">1</option>'
     + '<option value="2">2</option>'
     + '<option value="3">3</option>'
     + '</select>'; var reg = /<select[^>]*>.*?<\/select>/g
    alert(str.match(reg)[0] + '\r\n--------------------------\r\n' + str.match(reg)[1]);

    //-->
    </script>
      

  4.   

    你二楼的条件我也看不懂...
    我只是按照你开始说的 匹配<select></select>中的内容 没看这个sdadasd没匹配吗?
      

  5.   


    晕 希望你提问题的时候 想好了 一次性提出来
    你这么说 我还是不明白 那你意思是 如果有这些字符是怎么办? 
    整个select内容都不要了?
    还是把这几个特殊字符过滤?
    还是??
      

  6.   

    <select 到 </select>中间只能有数字,字母,>,<,=,",_,空格,汉字
      

  7.   


    <script type="text/javascript">
    <!--
    var str = '<select multiple="multiple" size="3" name="aaa">'
    + '<option value="a" selected="selected">a</option>'
    + '<option value="b">b#$%@汉字留住</option>'
    + '<option value="c">c**@@#</option>'
    + '</select>'
    + 'sdadasd'  + '<select size="3" name="adassa">'
     + '<option value="1" selected="selected">1</option>'
     + '<option value="2">2*####</option>'
     + '<option value="3">3</option>'
     + '</select>'; var reg = /<select[^>]*>.*?<\/select>/g
    str = str.replace(/[^0-9a-z<>=\"_\s\u4e00-\u9fa5\/]/ig,'');
    alert(str.match(reg)[0] + '\r\n--------------------------\r\n' + str.match(reg)[1]);

    //-->
    </script>
      

  8.   

    如果有特殊字符整个select都不要了,能返回吗?谢啦
      

  9.   


    // 晕 最后一次回答 真墨迹了...
    <script type="text/javascript">
    <!--
    var str = '<select multiple="multiple" size="3" name="aaa">'
    + '<option value="a" selected="selected">a</option>'
    + '<option value="b">b#$%@汉字留住</option>'
    + '<option value="c">c**@@#</option>'
    + '</select>'
    + 'sdadasd'  + '<select size="3" name="adassa">'
     + '<option value="1" selected="selected">1</option>'
     + '<option value="2">2</option>'
     + '<option value="3">3</option>'
     + '</select>';
    (function(){
    var reg = /<select[^>]*>.*?<\/select>/g, arr = [],
    filter = /[^0-9a-z<>=\"_\s\u4e00-\u9fa5\/]/ig
    for(var i = 0, re = str.match(reg); i < re.length; i++){
    if(re[i].search(filter) == -1){
    arr.push(re[i]);
    }
    }
    alert(arr); // 符合条件的 都被存在这个arr数组里 可以通过循环arr去访问所有

    })();

    //-->
    </script>
      

  10.   


    var html = document.body.innerHTML;
    var reg = /<select\s+[\s\d\w\u4e00-\u9fa5 <\"=_\/]*>.*?<\/select>/ig; 
    var t = html.match(reg);
    alert(t[0]);
    alert(t[1]);