- match是字符串方法,写法为:str.match(reg)
- exec是正则表达式方法,写法为:reg.exec(str)
match和exec在匹配成功时返回的都是数组,在没有匹配上时返回的都是null。
match和exec进行区分
- 当不使用全局匹配时,两者的匹配效果是一样的,仅返回第一次匹配成功的结果.(包括分组内容,匹配第一次)如
str = "abbb34eftab0modabbbbb6";
var reg = /a(b)+(\d+)/i;
var arr = str.match(reg);
console.log(arr);
//["abbb34", "b", "34", index: 0, input: "abbb34eftab0modabbbbb6"] - 使用全局匹配/g时,exec的执行结果不受影响。但是match会返回全局匹配的结果,将不在有分组匹配信息和索引等值。如:
var s = "aaa1 bbb2 ccc3";
var reg = /\b(\w+)(\d{1})\b/g;
var rs_match1 = s.match(reg);
var rs_exec1 = reg.exec(s);
console.log("match1:",rs_match1);//["aaa1", "bbb2", "ccc3"]
console.log("exec1:",rs_exec1);// ["aaa1", "aaa", "1", index: 0, input: "aaa1 bbb2 ccc3"]