贪婪匹配:尽可能多的匹配;没有符号"?"
非贪婪匹配:尽可能少的匹配; 有符号"?"
? 重复任意次,但尽可能少重复
+? 重复1次或更多次,但尽可能少重复
?? 重复0次或1次,但尽可能少重复
{n,m}? 重复n到m次,但尽可能少重复
{n,}? 重复n次以上,但尽可能少重复
举例:
/a[a-z]{2,4}/.exec("abcdefghi") 返回 "abcde"
/a[a-z]{2,4}?/.exec("abcdefghi") 返回"abc"
疑问:
/(aa|aabaac|ba|b|c)*/.exec("aabaac") ===》["aaba","ba"](猜测:因为括号后面的星号,即括号里的字符串组可以重复0-n次,里面的字串组之间是|分割,可以选择组合,贪婪匹配,选择能匹配的最长(或字串组数多?)即选择了第一组和第三组组合,匹配了输入字串的aaba,正则中有一个左括号,代表有一个捕获,捕获时捕获该括号的最新字串,即组合字串中最后一个字串即ba????猜测。。。。)
"aaaaaaaaaa,aaaaaaaaaaaaaaa".replace(/^(a+)1*,1+$/,"$1") ==》aaaaa (由多个a组成的字符串,并记下该字符串,以该串开始,重复0-n次,跟一个逗号,再跟一个该串结尾的重复1-n次的 匹配 并捕获该串,输出的为该串,也相当于逗号分隔的两字串(重复的同一个字符组成)的最大公约数)
/(z)((a+)?(b+)?(c))*/.exec("zaacbbbcac") ===》 ["zaacbbcac","z","ac","a","undefined","c"] 与上上个例子同理
/(a*)*/.exec("b") ==》 ["","undefined"]
/(a*)b1+/.exec("baaaac") ==》["b",""]
正则表达式中 的意义:
http://bbs.itheima.com/thread-7177-1-1.html