经常碰到别人的代码当中有这个出现.*是指任何字符0个或多个,
.?是指任何字符0个或1个.
.*? 到底是怎么回事?

解决方案 »

  1.   

    .表示除换行和回车之外的任意字符。
    *和?是量词。*表示0个以上,?表示0个或一个,是用来形容.的。*?是表示0到多个,和*的区别是匹配方式不一样
    *是贪婪量词,就是尽可能的一次匹配更多的字符,后面紧跟着一个?就变成隋性量词了,就是一次尽可能匹配更少的符。比如var str = "abc9bd9eg9et9ee";
    reg1 = /9\w*9/;
    reg2 = /9\w*?9/;
    alert(str.replace(reg1,""));
    alert(str.replace(reg2,""));发现reg1匹配了9bd9eg9et9,而reg2只匹配了9bd9
      

  2.   

    谢谢Inpool,真的是好人啊!!