ES5-正则表达式-15.10.2.5 选择项(Term)

贪婪匹配:尽可能多的匹配;没有符号"?"
非贪婪匹配:尽可能少的匹配; 有符号"?"
  ? 重复任意次,但尽可能少重复
  +? 重复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

原文地址:https://www.cnblogs.com/Decmber/p/5826403.html