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()则与全局相关联。当定义为非全局时,两者执行结果相同。