- match是字符串方法,寫法為:str.match(reg)
- exec是正則表達(dá)式方法,寫法為:reg.exec(str)
match和exec在匹配成功時(shí)返回的都是數(shù)組,在沒有匹配上時(shí)返回的都是null。
match和exec進(jìn)行區(qū)分
- 當(dāng)不使用全局匹配時(shí),兩者的匹配效果是一樣的,僅返回第一次匹配成功的結(jié)果.(包括分組內(nèi)容,匹配第一次)如
str = "abbb34eftab0modabbbbb6";
var reg = /a(b)+(\d+)/i;
var arr = str.match(reg);
console.log(arr);
//["abbb34", "b", "34", index: 0, input: "abbb34eftab0modabbbbb6"] - 使用全局匹配/g時(shí),exec的執(zhí)行結(jié)果不受影響。但是match會返回全局匹配的結(jié)果,將不在有分組匹配信息和索引等值。如:
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"]