<script> var reg = /bca+?/; var rs = reg.exec('bcaaaa'); alert(rs[0]); var reg = /bca+/; var rs = reg.exec('bcaaaa'); alert(rs[0]); </script>看这个例子对你的理解有没帮助
<script> var reg = /bca+?/; var rs = reg.exec('bcaaaa'); alert(rs[0]); //打印bca var reg = /bca+/; var rs = reg.exec('bcaaaa'); alert(rs[0]); //打印bcaaaa </script>junp2007,你举的例子我明白 那你说说为什么/a+bc/和/a+?bc/效果一样呢? var reg1 = /a+bc/; var reg2 = /a+?bc/; alert(reg1.exec('aaabc')); //打印 aaabc alert(reg2.exec('aaabc')); //打印 aaabc
原本我是这样理解的:/a+?bc/中a+变成了非贪婪模式,就表示只取一个a,后面紧跟bc,所以应该匹配abc才对。
/a+bc/和/a+?bc/来匹配'aaaabc'时为什么没有区别?
a?//匹配零个或一个a
a*//匹配零个或多个a
如果只想取一个a,可以用a{1}
var reg = /bca+?/;
var rs = reg.exec('bcaaaa');
alert(rs[0]);
var reg = /bca+/;
var rs = reg.exec('bcaaaa');
alert(rs[0]);
</script>看这个例子对你的理解有没帮助
var reg = /bca+?/;
var rs = reg.exec('bcaaaa');
alert(rs[0]); //打印bca
var reg = /bca+/;
var rs = reg.exec('bcaaaa');
alert(rs[0]); //打印bcaaaa
</script>junp2007,你举的例子我明白
那你说说为什么/a+bc/和/a+?bc/效果一样呢?
var reg1 = /a+bc/;
var reg2 = /a+?bc/;
alert(reg1.exec('aaabc')); //打印 aaabc
alert(reg2.exec('aaabc')); //打印 aaabc
+?为最小匹配,所以/bca+?/只对bcaaaa起作用,它匹配到第一个a就停止了往后匹配,但对于aaabc,从第一个a就开始匹配,起到bc。
或者说+?(最小匹配),只对往后匹配起作用。