抱歉,例子举错了,上面那个结果是adg看这个例子
<html><script language = "JavaScript"> var str  = "aaadabvad"; var patt = new RegExp("^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$","g");
var result;
result = patt.exec(str)
  document.write(result);</script> </html>结果是 
aaadabvad,d

解决方案 »

  1.   

    如果匹配,返回字符串自己+所有可引用分组 的数组
    <script language = "JavaScript"> 
    var result; 
    var str  = "adg"; 
    var patt = new RegExp("^(a)(d)(g)$","g"); 
    result = patt.exec(str);
    document.write(result+"<br>"); //adg,a,d,g
    patt = new RegExp("^(?:a)(d)(g)$","g"); 
    result = patt.exec(str);
    document.write(result);//adg,d,g
    </script>
      

  2.   

    我想知道的关键就是在怎样判断可引用的分组是什么我在做的是 利用java.utli.regex.*;实现javascript的exec()函数的功能
      

  3.   

    怎样判断可引用的分组是什么 
    --------
    (abcd)加个括号就叫可引用的分组
    (?:abcd)括号里加个?:表示不可引用
      

  4.   

    <html> <script language = "JavaScript"> var str  = "aaadabvad"; 
    var patt = new RegExp("^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$","g"); 
    var result; 
    result = patt.exec(str) 
      document.write(result); </script> </html>结果是 
    aaadabvad,d 按照你的说法,我理解是分组为([a-zA-Z0-9]|[._]){4,19}
    那返回的为什么不是  去掉第一个a的aadabvad,而只是一个d?
      

  5.   

    ([a-zA-Z0-9]|[._]{4,19})你这样才是去掉第一个a的aadabvad
      

  6.   

    能帮我解释下,为什么我那段最后是aaadabvad,d吗?我实在不理解 
      

  7.   

    正则表达式改成"^[a-zA-Z]{1}(([a-zA-Z0-9]|[._]){4,19})$"
    str=aaadabvad
    结果是aaadabvad,aadabvad,d三个对象
    还是有个d.....
      

  8.   

    "^[a-zA-Z]{1}(([a-zA-Z0-9]|[._]){4,19})$" 
    你把里面的括号去掉
    "^[a-zA-Z]{1}([a-zA-Z0-9]|[._]{4,19})$" 
    就是aaadabvad,aadabvad
    正则分组你还没理解
      

  9.   

    前两个输出我理解,第三个输出是d,是aadabvad的最后一个字母难道这就是因为所谓的“反向引用”?从后往前找?