在JavaScript中的match和exec

13 浏览
0 Comments

在JavaScript中的match和exec

我需要对JavaScript中的match和exec进行一些澄清;在这里有人说“使用带有全局正则表达式的exec函数意味着要在循环中使用”,但首先正如您在我的示例中所看到的,情况并非如此;在我的示例中,带有全局正则表达式的exec将所有匹配项返回为数组!其次,他们说String.match将返回所有匹配项,无需循环遍历!但是在我的示例中并不是这样,它只返回输入字符串?我是否误解/做错了什么?

var myString = "[22].[44].[33].";
var myRegexp = /.*\[(\d*)*\].*\[(\d*)*\].*\[(\d*)*\].*/g;
var execResult = myRegexp.exec(myString);
console.log(execResult.length);
console.log(execResult[1]);// 返回22,execResult包含从索引1到数组长度的所有匹配项
var matchResult = myString.match(myRegexp);
console.log(matchResult.length);
console.log(matchResult);// 只返回输入字符串myString,即"[22].[44].[33]."!为什么会这样?

0