量词表示之前的元素重复出现的次数,比如中国的邮政编码是由6位数字构成的字符串,即\d\d\d\d\d\d,通过量词可以简写成\d{6}。
一般形式
量词 | 说明 | |
---|---|---|
{m} | 表示之前的元素出现m次 | |
{m,n} | 表示之前的元素出现的次数在m到n之间,m是下限,n是上线 | |
{m,} | 之前的元素最少出现m次,出现次数无上限 |
常用量词
常用量词 | {m,n}等价形式 | 说明 |
---|---|---|
* | {0,} | 可能出现,也可能不出现,出现次数没有上限 |
+ | {1,} | 至少出现1次,出现次数没有上限 |
? | {0,1} | 至多出现一次,也可能不出现 |
匹配优先量词和忽略优先量词
- 上面介绍的都是匹配优先量词,匹配优先量词与忽略优先量词一一对应,在匹配优先量词的后面加一个问号?就变成了忽略优先量词,如,匹配优先量词{m}对应的忽略优先量词是{m}?,匹配优先量词对应的忽略优先量词是?
- 两者的区别是匹配优先量词就是在是否要匹配的时候(如点号.、[\d\D]、[\w\W]、[\s\S]),优先选择匹配,并记下这个状态,以备将来‘反悔’(回溯);而忽略优先量词会优先选择忽略,如果后面的元素不能匹配,再尝试匹配。
/a.*a/.exec('a111a222a333') // a111a222a
/a.*?a/.exec('a111a222a333') // a111a