exec()与match()的区别:exec()是正则表达式的方法,它的参数是字符串;match()是字符串的方法,它的参数可以是正则表达式。
1.当正则表达式无子表达式,并且定义为非全局匹配时,exec()和match()执行的结果是一样的。
var str="00css3 HTML5";
var reg=/\w+/;
console.log(str.match(reg));
console.log(reg.exec(str));
![]()
2.当正则表达式无子表达式,并且定义为全局匹配时,exec()和match()执行的结果不一样。match()返回的是多个元素数组,exec()返回第一个匹配的字符串内容。
var str="00css3 HTML5";
var reg=/\w+/g;
var reg2=/\w+5/g;
console.log(str.match(reg));
console.log(str.match(reg2));
console.log(reg.exec(str));

3.当正则表达式有子表达式,并且定义为非全局匹配时,exec()和match()执行的结果是一样的。
var str="00css3 HTML5";
var reg1=/([A-z]+)\d/;
console.log(str.match(reg1));
console.log(reg1.exec(str));

4.当正则表达式有子表达式,并且定义为全局匹配时,exec()和match()执行的结果不一样。此时match()将忽略子表达式,只查找全匹配正则表达式并返回所有内容。
var str="00css3 HTML5";
var reg1=/([A-z]+)\d/g;
console.log(str.match(reg1));
console.log(reg1.exec(str));

exec()与全局是否定义无关系,而match()则与全局相关联。当定义为非全局时,两者执行结果相同。
本文详细解析了JavaScript中正则表达式的match()和exec()方法的区别,包括在不同情况下的行为表现,如全局匹配、子表达式匹配等场景,帮助读者深入理解这两种方法的使用场景。
535

被折叠的 条评论
为什么被折叠?



