test,exec以及match三者的區別

test

  • test 是regexp的方法,返回的是布爾值,檢測對應得字符串是否匹配某種模式
  • 示例:
var str="catastrop";
var reg= new RegExp("cat","g");//(使用RegExp的模式)
var reg2=/cat/g;(字面量模式)
console.log(reg.test(str));//true
console.log(reg2.test(str));//true

exec

  • exec也是regexp的方法,查找並返回當前的匹配結果,以數組的形式返回
  • 示例:
var str="catastrop";
var reg=new RegExp("cat","");
var getresult=reg.exec(str);
console.log(getresult);
  • 說明:若是不存在模式,則getresult爲null,不然getresult是一個長度爲1的數組,其值就是當前匹配項,返回結果:["cat", index: 0, input: "catastrop"]

全局模式與非全局模式的區別

  • exec 方法受參數 g 的影響。若指定了 g,則下次調用 exec 時,會從上個匹配的 lastIndex 開始查找。
  • 示例:
var str = "1a1b1c";
var reg = new RegExp("1.", "");
alert(reg.exec(str)[0]);
alert(reg.exec(str)[0]);
  • 上述兩個輸出都是 1a。如今再看看指定參數 g:
var str = "1a1b1c";
var reg = new RegExp("1.", "g");
alert(reg.exec(str)[0]);
alert(reg.exec(str)[0]);
  • 上述第一個輸出 1a,第二個輸出 1b。

match

  • match是字符串的方法,查找並返回當前的匹配結果,並以數組的形式返回
  • match的非全局模式跟exec的方法返回值是同樣的
  • 示例:
var  string="catcat";
var reg=new RegExp("cat","");
console.log(string.match(reg));
  • 若是指定了參數g,那麼match一次返回全部結果
var  string="catcat";
var reg=new RegExp("cat","g");
console.log(string.match(reg));
console.log(string.match(reg));
  • 返回結果:["cat", "cat"]
相關文章
相關標籤/搜索