var str=" this is a book about javascript";
var reg=/^(\s*(\w+)){8}/;
reg.test(str);
document.write("<h1>"+RegExp.$1+"<h1>");上面的代码为什么输出结果是 t 
原理是怎么样的? 

解决方案 »

  1.   

    RegExp.$1是RegExp的一个属性,指的是与正则表达式匹配的第一个 子匹配(以括号为标志)字符串,以此类推,RegExp.$2,RegExp.$3,..RegExp.$99总共可以有99个匹配
      

  2.   

    var str=" this is a book about javascript";
    var reg=/^(\s*(\w+)){6}/;
    reg.test(str);
    document.write("<h1>"+RegExp.$1+"<h1>");
    楼上说的我明白。
    如果改成这样,红色部分改成6,那是对的,输出javascript
    但是现在超过6了,那就是说超出字符串长度了,它为什么输出是  ‘t’(最后一个字符)  呢?
    超出长度的获取方式是怎么样的啊?
      

  3.   

    var reg=/^(\s*(\w+)){8}/;
    获取到这8个部分
     this
     is
     a
     book
     about
     javascri
    p
    t
      

  4.   


    我这样
    var str=" this is a book about javascript";
    var reg=/^(\s*(\w+)){8}/;
    reg.test(str);
    document.write("<h1>"+RegExp.$2+"<h1>");是不是就把‘p’取出来了?我这样写取不出来啊。而且$3以后都是空值。
      

  5.   

    同意4楼的分析结果。
    补充一下:var str="iab icd ief";var reg1=/i(\w){2}/;
    reg1.test(str);
    document.write("<h1>" + RegExp.$1 + "/" + RegExp.$2 + "</h1>");//print "b/"var reg2 = /i(\w)(\w)/;
    reg2.test(str);
    document.write("<h1>" + RegExp.$1 + "/" + RegExp.$2 + "</h1>");//print "a/b"