正则表达式 --- 捕获的贪婪性以及取消贪婪性

一、贪婪性【正则的每一次捕获都是按照匹配最长的结果捕获的】,如果不理解这句话,先看下面的代码
1、举例

let reg = /\d+/g
let box = "AAAAA2019BBBBB2020CCCCC"
console.log(box.match(reg))   //结果为["2019", "2020"]

结果如下,可以看到,我们的正则是匹配到数字就行,原本应该是2就行,但结果是2019,这就是贪婪性,把后面连着的数字都捕获到了;
然后被字母BBBBB中断,但是正则加了g修饰符,全局匹配,所以会继续往后找,所以就继续找到了2020
在这里插入图片描述
2、取消贪婪性的方法一,去掉+加号

let reg = /\d/g
let box = "AAAAA2019BBBBB2020CCCCC"
console.log(box.match(reg))   //["2", "0", "1", "9", "2", "0", "2", "0"]

在这里插入图片描述
3、取消贪婪性的方法二,在+加号后面加?问号

let reg = /\d+?/g
let box = "AAAAA2019BBBBB2020CCCCC"
console.log(box.match(reg))   //["2", "0", "1", "9", "2", "0", "2", "0"]

在这里插入图片描述
?问号是量词元字符;
如果?左边是普通元字符,表示让普通元字符出现0到1次;
如果?左边是量词元字符,表示取消这个量词符的贪婪性;

你可能感兴趣的:(正则表达式)