exec() 方法用于检索字符串中的正则表达式的匹配。
exec()接受一个参数,既要应用模式的字符串,然后返回包含第一个匹配项信息的数组;或者在没有匹配项的情况下返回null;
exec()即使在模式中设置了全局模式(g),也只返回一个匹配项
在不设置全局模式下,在同一个字符串上多次调用exec()将始终返回第一匹配信息;在设置全局模式下,每次调用exec()则会在字符串中继续查找新匹配项。
举个例子看一下(模式没有设置全局模式):
var text = "cat, bat, sat, fat,aaa";
var pattern1 = /.at/;
var matches = pattern1.exec(text);
console.log(matches.index); //0
console.log(matches[0]); //cat
console.log(matches.input); //cat, bat, sat, fat,aaa
console.log(pattern1.lastIndex);//0
matches = pattern1.exec(text);
console.log(matches.index);//0
console.log(matches[0]);//cat
console.log(matches.input);//cat, bat, sat, fat,aaa
console.log(pattern1.lastIndex);//0
举另一个例子看一下(模式设置全局模式):
var text = "cat, bat, sat, fat,aaa";
var pattern1 = /.at/g; //设置了全局模式
var matches = pattern1.exec(text);
console.log(matches.index); //0
console.log(matches[0]); //cat
console.log(matches.input); //cat, bat, sat, fat,aaa
console.log(pattern1.lastIndex);//3
matches = pattern1.exec(text);
console.log(matches.index);//5
console.log(matches[0]);//bat
console.log(matches.input);//cat, bat, sat, fat,aaa
console.log(pattern1.lastIndex);//8
以上例子中还用到 lastIndex 方法, 这里简单讲解一下,这个方法会返回下一个搜索匹配想的字符位置;