主要不懂的就是.+  和 .+?
.+我知道,就是忽略了第一个</a>一直匹配到结束,
可是.+?是什么意思?为什么没有忽略第一个</a>,加了?意思是尽可能少匹配,那尽可能少匹配多少?
var str = "<a>aaaa</a><a>bbbbbbb</a>";
alert(str.match(/<a>.+<\/a>/)[0]))
alert(str.match(/<a>.+?<\/a>/)[0])

解决方案 »

  1.   

    var str = "a1a2a";
    var reg1=/a.+a/;
    var reg2=/a.+?a/;
    alert(str.match(reg1)[0]);
    alert(str.match(reg2)[0]);
    类似于这样 
    你大体可以认为贪婪匹配是从后往前走 
    而懒惰是从前往后走
    只要匹配成功就结束
      

  2.   

    .+这种叫贪婪模式
    .+?这种是非贪婪模式贪婪模式下,正则表达式会匹配尽可能多的字符,不会管整个正则是否匹配成功非贪婪模式下,正则表达式会在满足整个正则表达式匹配成功的前提下,尽可能少的匹配字符。比如有字符串"aaaaaaaa"
    .+会匹配到"aaaaaaaa"
    .+?会匹配到"a"又比如有字符串"abcdefg"
    .+d  这个正则表达式会匹配失败
    .+?d  这个正则表达式则会匹配成功,匹配到的是"abcd"讲的不清不楚。。不知道你能不能明白。。
      

  3.   

    .+ 与 .+?的区别?
    答:1).+为贪婪模式,如何理解贪婪模式,首先理解定义:贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配。关键理解:尽可能多。“+” 在正则表达匹配1次或者匹配1次以上,
    那么在贪婪模式下,就是选则以1次以上进行字符匹配,所以叫贪婪模式。
    2).+?为非贪婪模式,如何理解非贪婪模式,首先理解定义非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配。如果理解了贪婪模式,那么非贪婪就是其反面,还是拿“+”举例,在非贪婪模式,就是先以1次进行匹配,如果1次不行在用1次以上进行匹配。不知道有没有理解,如果没理解,请详细看http://blog.csdn.net/zyloveyrf/article/details/6937797希望对你有帮助