let str = 'zhongguo2020qiangda2021fuyu2022';
/*
* reg.lastIndex: 当前正则下一次匹配的起始索引位置
* 懒惰性捕获的原因:默认情况下lastIndex的值不会被修改,每一次都是从字符串
* 开始位置查找,所以找到的永远是第一个
* 解决办法:全局修饰符g
*/
let reg = /\d+/;
console.log(reg.lastIndex); // 0 下面匹配捕获是从str索引0的位置开始找
console.log(reg.exec(str));
console.log(reg.lastIndex); // 0 下第一次匹配捕获完成,lastIndex没有改变,所以下一次exec依然是从字符串最开始找,找到的永远是第一个匹配到的。
let reg = /\d+/g;
console.log(reg.exec(str)); // ['2020'...]
console.log(reg.lastIndex); // 12 设置全局匹配修饰符g后,第一次匹配完,lastIndex会自己修改
console.log(reg.exec(str)); // ['2021'...]
console.log(reg.lastIndex); // 19
console.log(reg.exec(str)); // ['2022'...]
console.log(reg.lastIndex); // 27
console.log(reg.exec(str)); // null 当全部捕获后,再次捕获的结果是null,但是lastIndex又回归了初始值0
console.log(reg.lastIndex); // 0
console.log(reg.exec(str)); // ['2020'...]
// 字符串中的match方法,可以在执行一次的情况下,捕获到所有匹配的数据(前提:正则也得设置g才可以);
let reg = /\d+/g;
console.log('2020niuhao2021nihao2022nihao'); // [2020, 2021, 2022]
JS正则表达式的懒惰性
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 一、正则表达式的捕获及懒惰性: 二、解决正则捕获到的懒惰性: 总结:什么是正则表达式的捕获:使用正则表达式的exe...
- 在讲贪婪模式和惰性模式之前,先回顾一下JS正则基础: 写法基础: ①不需要双引号,直接用//包含 => /wehf...
- 贪婪,懒惰模式 重复匹配 在正则表达式语法中,定义了一组重复类量词,如表所示。它们定义了重复匹配字符的确数或约数。...
- 1、量词 正则表达式的量词有:* + ? {}* : 匹配0次到多次+ : 匹配1次到多次? : 匹配0次或1次{...