贪婪性
正则捕获时,会把匹配的所有拿出来
var reg = /\d{2,5}/;//数字出现至少2次,最多5次
var str = "2018ceshi2019";
console.log(reg.exec(str));
结果:["2018", index: 0, input: "2018ceshi2019"]
解决贪婪性:在量词后面加? 非贪婪匹配
reg = /\d{2,5}?/;
console.log(reg.exec(str));
结果:["20", index: 0, input: "2018ceshi2019"]
懒惰性
默认只会匹配一次
var reg = /\d+/;
var str = "2018ceshi2019";
console.log(reg.exec(str));//["2018", index: 0, input: "2018ceshi2019"]
console.log(reg.exec(str));//["2018", index: 0, input: "2018ceshi2019"]
解决懒惰性:通过修饰符g全文查找
reg = /\d+/g;
console.log(reg.exec(str));//["2018", index: 0, input: "2018ceshi2019"]
console.log(reg.exec(str));//["2019", index: 11, input: "2018ceshi2019"]
console.log(reg.exec(str));//null
注意:
加上修饰符g以后,会修改lastIndex属性值,查找字符串时由lastIndex决定
var str = "2018ceshi2019";
var reg = /\d+/;
console.log(reg.lastIndex);//0
console.log(reg.exec(str));
console.log(reg.lastIndex);//0
console.log(reg.exec(str));
console.log(reg.lastIndex);//0
reg = /\d+/g;
console.log(reg.lastIndex);//0
console.log(reg.exec(str));
console.log(reg.lastIndex);//4
console.log(reg.exec(str));
console.log(reg.lastIndex);//13
console.log(reg.exec(str));
console.log(reg.lastIndex);//0