javascript exec match 區別

在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",是不是覺得很奇怪呢?

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章