js中, match和exec方法的區別

1. 來源分別爲: string.match(reg) 和 RegExp.exec(str);數組

2. 區別spa

   >  現有 字符串s1 和 正則對象 r1.     目標: 抽出s1中的全部電話號碼3d

var s1 = "愛是方法發生說法是否18324569078放棄並且我15656783456時光是大法官17699098765";
var r1 = /(1{1}\d{10})+/g;

 

   >  string.match(reg) 方法參數爲reg對象code

     1. 當reg爲全局表達式 //g 時: 返回全部的匹配結果的組成的數組對象

2. 當reg爲非全局表達式 // 時, 返回一個數組, 數組第一個元素爲第一個與reg匹配的字符串, 餘下參數爲與字符串中的圓括號匹配的字符串, 還有index表示當前發生匹配的位置, input表示當前正在檢索的字符串blog

 

   >   reg.exec(str) 方法參數爲str字符串

        與match方法不一樣的是, 不管reg是否爲全局匹配, 都返回一個數組, 該數組的結果的元素含義與match方法的非全局匹配結果的元素含義一致。 不一樣的是exec方法會自動維護lastIndex屬性。input

        1. 當reg爲全局匹配 //g 時, 會返回包含第一個匹配結果的數組, 而後把lastIndex屬性設置爲當前匹配結果的結束處的位置, string

 

      當再一次調用exec()時, 會繼續從lastIndex位置開始查找, 若匹配到, 則記錄修改lstIndex屬性, 直到查找結果爲null, 則把lastIndex設爲0 ,下一輪重頭查找。這種特殊行爲容許咱們重複的調用exec方法。ast

     2. 當reg爲費全局匹配 // 時, 每次都會返回包含第一個匹配結果的數組, 而後把lastIndex設爲0,既: 每次都返回第一個匹配結果的數組。

 

注意: RegExp.test(str)方法表現的和exec同樣, 他也會維護lastIndex屬性, 重複調用返回結果爲: 。。。 - true - false - true - false - 。。。

相關文章
相關標籤/搜索