惰性是从左往右匹配,第一个不匹配就再加第二个...
贪婪是先匹配整个字符串,然后从右往左,不匹配就舍去一个 ...如:
<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
贪婪是先匹配整个字符串,然后从右往左,不匹配就舍去一个 ...如:
<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指的就是(.*?)这部分,而\s指的是空格
又比如:
/(.*?)\s*(.*?)$/和字符串 "abc def" 匹配.RegExp.$2 的值为 "def"
贪婪与懒惰:http://blog.csdn.net/chinmo/archive/2008/07/01/2601573.aspx
自己看啊
这里面将得很清楚了
------------
重复的读了几篇,好像有点理解了.
/(.*?)\s*$/ 与 "abc " 匹配后,RegExp.$1 不是 空字符串而是 "abc" ,是因为 如果是 "" 的话,不能满足整个匹配成功,而 "abc" 是整个匹配成功前提下使用最少的重复.
不知理解的是否正确,请指教.
看这里,最后一楼。
所以$1是abc
\s*是三空格其主要原因是因为猫点标记$的限定导致回溯。