本帖最后由 hztgcl1986 于 2011-11-27 20:18:06 编辑

解决方案 »

  1.   


    var text = "bat,cat,sat,fat";
    var p = /.at/igm;
    var m = text.match(p);
    alert(m); 
      

  2.   

    <script>
    var text = "bat,cat,sat,fat";
    var p = /.at/igm;
    var m = text.match(p);
    //var m = p.exec(text);for (i=0;i<m.length ;i++ )
    {
    window.alert(m[i])
    }
    ;</script>
      

  3.   

    原来数组是可以直接alert的。
      

  4.   

    alert也是调的toString() 回想一下object
      

  5.   

    但是alert一个object会显示[object Object],所以我以为数组也要一个个分解
      

  6.   


    +1
    其实你用split(',')
    就不错!!
      

  7.   


    var text = "bat,cat,sat,fat";
    var p = /.at/ig;
    while(p.lastIndex<text.length)
    {
    var m = p.exec(text);
    alert(m);
    }
      

  8.   

    var text = "bat,cat,sat,fat";
    var p = /.at/igm;
    var m = text.match(p);
    alert(m); 或var text = "bat,cat,sat,fat";
    var p = /.at/igm;
    var m;
    while((m = p.exec(text)) !== null){
    alert(m);
    }
      

  9.   

    为什么var m = p.exec(text);不能返回所有匹配(bat cat sat fat),而只返回了第一个匹配(bat)呢?如何才能使exec方法与text.match(p)达到相同的效果?
      

  10.   

    答案在8楼的第二个方法,至于原因呢,我只能告诉你人家API本身就是这样设计的。。自己看API看清楚点吧,建议看英文API
      

  11.   

    8楼写法不严格 var text = "bat,cat,sat,fat",
    p = /.(a)t/igm,
    result = [],
    m;
    while((m = p.exec(text)) !== null){
    result.push(m[0]);
    }
    alert(result);这个能达到和match一样的效果,但是如果是这么简单的正则,没必要用exec,因为你根本没用到exec比match多出的功能。。