以下是我给的数据:
 var data = "a2Aaab3B";
 var pattern = /([a-z])(\d)([A-Z])/g, 
我要取出 3,也就是取出第个年匹配的第二个括号的东西?
用match我会,是:
 var d=data.match(pattern)[1].match(/\d/);//取出了我想要的。
用exec方法怎么做?

解决方案 »

  1.   

    var data = "a2Aaab3B";
    var reg=/(\d)/g;
    while(reg.exec(data)){
       alert(RegExp.$1);
    }
      

  2.   

    这种while的我会
    我要的是第二年匹配的第二年括号的东西,不要全部。
      

  3.   


    <script type="text/javascript">
    <!--
    var data = "a2Aaab3B"; 
    var pattern = /([a-z])(\d)([A-Z])/g;
    if((r = pattern.exec(data)) != null){
    alert(r[2])
    }
    //-->
    </script>
      

  4.   


    <script type="text/javascript">
    <!--
    var data = "a2Aaab3B"; 
    var pattern = /([a-z])(\d)([A-Z])/g, arr = [];
    while((r = pattern.exec(data)) != null){
        arr.push(r[2]);
    }
    alert(arr[1]); //一直不太了解楼主的意图 把值都选出来可以自己筛选啊..
    //-->
    </script>
      

  5.   

    我的意思是:
    match是找匹配的,它找的整体,比方说:
    var data = "a2Aaab3B"; 
    var pattern = /([a-z])(\d)([A-Z])/g
    用data.match()
    它打出来的是
    a2A和b2B
    我想再细分
    对于a2A:
    a匹配([a-z]);
    2匹配(\d);
    A匹配([A-Z])
    对于b3B:
    b匹配([a-z]);
    3匹配(\d);
    B匹配([A-Z])
    我想取出3怎么办
    如果用pattern.exec(data)[2]取出来的是2,即它找出来的是第一个match,而我的3是第二个match,怎么取3?
      

  6.   

    <script type="text/javascript">
    <!--
    var data = "a2Aaab3B"; 
    var pattern = /\d.+?(\d)/g;
    var d=pattern.exec(data);
    alert(d[1]);
    //-->
    </script>
      

  7.   

    pattern不能变,要是变了体现不出意义了。
      

  8.   

    可以这样:var data = "a2Aaab3B"; 
    var rv=[];
    data.replace(/([a-z])(\d)([A-Z])/g,function($,$1,$2){rv.push($2)})
    alert(rv[1]);
      

  9.   

    pattern不能变,那根本无法取出第二组。因为exec只取第一组匹配
      

  10.   

    谢谢各位的回答。我总结了下。
    已知:
    var data = "a2Aaab3B";
    var pattern = /([a-z])(\d)([A-Z])/g
    问题:要取出 3,也就是取出第个年匹配的第二个括号的东西。
    答案(alert为答案): 
    1.使用exec: var rv=[]; 
     var r;
     while((r=pattern.exec(data))!=null){
    rv.push(r[2]);
    }
    alert(rv[1]);2.使用matchvar result=data.match(pattern)[1].match(/\d/);
    alert(result);3.使用replace:var rl=[];
    data.replace(pattern,function($,$1,$2,$3){rl.push($2);});
    alert(rl[1]);谁还有方法可以继续写,欢迎交流。