javascript 中 exec 与 match 方法的区别和使用
比较
match方法在没有global标识的情况下和exec方法是等同的match方法在有global标识的情况下即是使用exec方法做循环即:
var re = /[^\/]+/g;
var match;
while (match = re.exec('/a/b/c/d')) {
// match is now the next match, in array form.
console.log(match)
}
示例
示例一
var str = 'The Quick Brown Fox Jumps Over The Lazy Dog';
var re = /quick\s(brown).+?(jumps)/i;
re.exec(str);
// ["Quick Brown Fox Jumps", "Brown", "Jumps"]
var re = /quick\s(brown).+?(jumps)/ig; // 加了 g
str.match(re);
// 因为匹配玩 re.lastIndex 变成了 25,从下一次循环开始的话 exec 得到的就是 null
// 所以只返回一个元素
// ["Quick Brown Fox Jumps"]
示例二
var str = '2016-03-14';
var re = /\d+/g;
str.match(re);
// ["2016", "03", "14"]
re.exec(str);
// ["2016"]
exec global 标识说明
对于 RegExp.proptype.exec 来说 global 标志是没有用的,也可以看到规范中没有使用 global 的情况。即:
const str = '2020-03-14';
// 无论有没有 g 都是一样的
/\d+/.exec(str); // ['2020']
/\d+/g.exec(str); // ['2020']

浙公网安备 33010602011771号