var str = "HTTP/1.0,,HTTP/1.1,,";
var strArray = str.split(",");
alert(strArray.length); // ---> 5
var strArray2 = str.split(/,/);
alert(strArray2.length); // ---> 2如何解释? 正则表达式不保留空值吗? 为什么不保留呢

解决方案 »

  1.   

    var strArray2 = str.split(/,/g); 
    加个g
      

  2.   


    这个问题目前我的感觉,只能归结于IE和FF解析引擎不一样..没找到相关说明 只能先记住测试结果了..
      

  3.   


    TO #3
    我认为这个问题不应该这么理解..split()只是以一个字符串做为分割符 进行分割
    所以/,/已经是,字符串了 与g无关..
    而且测试下可以发现IE ,FF 解析结果是不一样的
    <script type="text/javascript">
    <!--
    var str = "a,,b,,";
    alert(str.split(',')); // IE: a,,b,, FF: a,,b,,
    alert(str.split(/,/)); // IE: a,b    FF: a,,b,,
    //-->
    </script>
      

  4.   


    刚才在as下也试了下,结果和FF一致的,那就是IE自作聪明的//掐头去尾了...所以首选split(",")
      

  5.   

    应该是MS的JScript实现不一样吧
      

  6.   

    嗯,确实是ie/ff的差别.
    关键是这个的差别.
    alert(str.split(/,/));
    这种情况下,ie/ff都按字符,(逗号)切分,不论是否有修正符g,都切分所有.
    但是ie切分后的获得的数组自动把空值移除,而ff保留空值元素.
      

  7.   

    这个问题与http://bbs.51js.com/viewthread.php?tid=84771&page=1有点点类似。
      

  8.   

    如果是g的问题, 我就不会发这个贴了呵呵
    只能姑且认为IE就是不保留空值了呵呵
    谢谢各位呵呵