惰性是从左往右匹配,第一个不匹配就再加第二个...
贪婪是先匹配整个字符串,然后从右往左,不匹配就舍去一个 ...如:
<script>
var str = 'ab123';
var reg1 = /(.+)\d+$/; // ab12
var reg2 = /(.+?)\d+$/; // areg1.test(str);
alert(RegExp.$1); // ab12
reg2.test(str);
alert(RegExp.$1); // ab
</script>
/(.+)\d+$/
ab123
ab12 3/(.+?)\d+$/
a b123
ab 123

解决方案 »

  1.   

    不明白吗?
    $1指的就是(.*?)这部分,而\s指的是空格
    又比如:
    /(.*?)\s*(.*?)$/和字符串 "abc    def" 匹配.RegExp.$2 的值为 "def"
      

  2.   

     /(.*)\s*$/ 匹配 "abc    " ,RegExp.$1 的值为 "abc    ",也就是说*是贪婪的,而后边的\s*$ 在整个表达式中没有起任何作用 ,但是 把 (.*) 变成 (.*?) 后边的\s*$ 又起作用了,我这里有点不明白
      

  3.   

    /(.*)\s*$/ 是贪婪匹配,即有多少就匹配多少,"\s"表示空格,同样也包含在"."中.所以匹配的结果是"abc    " /(.*?)\s*$/ 是非贪婪匹配,当遇到第一个"\s"时就结束匹配了.所以匹配的结果是"abc"
      

  4.   

    http://blog.csdn.net/mingxuan3000/archive/2007/04/07/1556139.aspx这里有篇简单的文章 看看
      

  5.   

    /(.*)\s*$/ 你这个后面的当然不起作用,你既然知道是贪婪的,还不理解?自己仔细看好我这个博客,
    贪婪与懒惰:http://blog.csdn.net/chinmo/archive/2008/07/01/2601573.aspx
      

  6.   

    可是 cgisir 的回复 说是 非贪婪匹配即 惰性匹配 是从左到右的,不匹配就再加第二个,如果这样的话,碰到空字符串就匹配成功了,根本就不会遇到 第一个"\s"的。是不是优先级这方面的总是呢?或者有什么匹配规则?
      

  7.   

    贪婪与懒惰:http://blog.csdn.net/chinmo/archive/2008/07/01/2601573.aspx 
    自己看啊
    这里面将得很清楚了
      

  8.   

    .*?就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。
    ------------
    重复的读了几篇,好像有点理解了.
    /(.*?)\s*$/  与  "abc    " 匹配后,RegExp.$1 不是 空字符串而是 "abc" ,是因为 如果是 "" 的话,不能满足整个匹配成功,而 "abc" 是整个匹配成功前提下使用最少的重复.
    不知理解的是否正确,请指教.  
      

  9.   

    我也有点模糊,事实上我觉得完整匹配的是"c    ",但却是"abc    ",这关系到从左从右匹配顺序,超模糊。
      

  10.   

    http://topic.csdn.net/u/20080717/11/4e2c1401-f872-4459-848b-23a8c66d93c9.html
    看这里,最后一楼。
      

  11.   

    因为没有到触发传动装置驱动过程就匹配成功了
    所以$1是abc
    \s*是三空格其主要原因是因为猫点标记$的限定导致回溯。