在js中,在查找替換時經常使用到exec 和 match ,
兩者的區別是,exec是正則RegExp提供的方法,match是字符串對象string提供的方法,兩者返回值都爲一個數組對象
exec方法只進行一次匹配,返回的數組對象的第一個爲匹配到得字符串,假如正則表達式中存在括號即分組,第二個以後便依次返回分組匹配
match 在沒有g屬性即全局匹配時返回值跟exec沒有分組的情況下返回值是一樣的,即都返回第一個匹配,返回數組僅僅包含第一個匹配結果,
如果match存在g屬性即全局匹配,那麼match返回的數組爲依次匹配到得結果,如下列子:
某些情況下exec返回的結果和match返回的結果一樣:
如下的代碼將彈出"cat2,at":
var str= "cat2,hat8" ;
var p=/c(at)\d/;
alert(p.exec(str))
其中第一個元素是匹配的字符串"cat2",之後的元素是括號中匹配的"at"。
-------------------------------------------
match函數在滿足如下條件下將越俎代庖,實現和exec一樣的功能:
1、正則表達式中含有分組(括號)
2、返回唯一的匹配
且看如下的代碼:
var str= "cat2,hat8" ;
var p=/c(at)\d/;
alert(p.exec(str))
alert(str.match(p))
都將彈出消息"cat2,at",是不是覺得很奇怪呢?