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次{...