Javascript正則中的exec和match
分幾種情況說明1.如果re中不是全域的也就是不帶g
var str = "cat3 hat4"; var re = /\w+\d/; var ex = re.exec(str); var mt = str.match(re); console.log(ex); console.log(mt);
結果是["cat3"] 也就是說如果不帶g的情況那麼..這2個返回的一樣 那麼就是exec和match 不是全域的時候都是返回匹配到的第一個如果沒有返回null
2.如果re中帶g, 也就是全域的
var str = "cat3 hat4"; var re = /\w+\d/g; var ex = re.exec(str); var mt = str.match(re); console.log(ex); console.log(mt);
結果是["cat3"] ["cat3", "hat4"] 這2個就有區別了.記住exec就算是全域的情況下也是只返回第一個與re匹配的 而match會返回所有匹配到的
3.如果re中帶分組但是不帶g
var str = "cat3 hat4"; var re = /\w+(\d)/; var ex = re.exec(str); var mt = str.match(re); console.log(ex); console.log(mt);
都是["cat3", "3"] 也就是說如果帶分組但是有不帶g 這2個方法結果是一樣的..第一個元素是匹配的 第2個開始就是分組1,,,,
4.如果re中帶分組也帶g
var str = "cat3 hat4"; var re = /\w+(\d)/g; var ex = re.exec(str); var mt = str.match(re); console.log(ex); console.log(mt);
["cat3", "3"] ["cat3", "hat4"] 這次結果不同了..exec是和不帶g的一樣 但是match 由於是全域的所以返回就是所有匹配的 沒有分組
還有他們2個exec是正則對象的方法 而match是字串的方法