1. 程式人生 > >正則表達中常用方法小結 test(),exec(),search(),match()區別及應用。

正則表達中常用方法小結 test(),exec(),search(),match()區別及應用。

今天覆習了一下正表示式物件的常用方法,對其中的細節進行總結了一下

下面詳細介紹一下各個方法的詳細使用

1 regExpObject.test(string value)    該方法通過正則表示式物件進行呼叫,該方法的功能就是檢查字串引數值中是否含有匹配regExpObject物件的子字串,如果含由匹配的字串,則返回true,否則返回false,也就是說該方法的返回值的型別為true,該方法當發現第一個匹配的字串時,將不再繼續向下尋找,直接返回,既不會忽略正則表示式中的全域性匹配符g(進行全域性搜尋),不會忽略i字元,如果要使用lastIndex屬性,則需要給呼叫該方法的正則表示式新增全域性匹配符g,否則lastIndex屬性將不起作用,其值始終為0,一旦添加了g全域性匹配符g,則lastIndex的值為匹配的字串結束的索引,示例如下:

///搜尋不分大小寫的Hello字串

var patt2 = /Hello/ig;   var str2 = "world,Hell,Hello"; //返回值為true  document.write("patt2.test(str2)",patt2.test(str2)); //由於加了g字元,此時的lastIndex值為:16,如果還要繼續使用正則表示式匹配其它字串物件,則需要將lastIndex的值置為0  //既只找到第一個符合的正則表示式的子字串後返回,否則將繼續向後尋找  document.write("test()方法之後的lastIndex值為:",patt2.lastIndex,"<br />");

   2 regExpObject.exec(string value) 該方法通過正則表示式進行呼叫,該方法的功能就是搜尋字串引數值中所有的匹配正則表示式的第一個字串,該搜尋為全域性搜尋,不會忽略g字元和i字元,但只返回第一個匹配的子字串,如果未找到匹配的字串,會繼續向後進行搜尋,直到找到第一個匹配的子字串,然後返回,不再向後尋找,如果 未找到匹配的字串,則返回null,該方法的返回值為字串型別,如果需要使用lastIndex屬性,需要為正則表示式新增g全域性匹配符,如果找到第一個匹配的子字串,則該lastIndex的值為第一個匹配的子字串的結束處的索引,否則lastIndex的值始終0,示例如下:

var str="helloworld! Hello world";

        //尋找 "Hello",只輸出第一個hello

        var patt=/Hello/ig;

        var result = patt.exec(str);

       document.write("Returned value: " + result);

        //匹配完成後的lastIndex的值為,此時的輸出的值為,9(由於添加了g字元)否則lastIndex不起作用

        document.write(patt.lastIndex);

        //look for "world"

  patt=/world/g;

    result=patt.exec(str);

        document.write("<br>Returned value: " + result);

  //匹配完world之後的lastIndex的值為

        document.write(patt.lastIndex);

        //(在不改變最初的正則表示式之前,一旦改變了正則表示式的值,則該lastIndex的值 將變為

0)如果不將lastIndex的值在匹配之後恢復為0,則如果再次使用該正則表示式的時候

  //則從lastIndex值指定的索引出開始匹配,而不是從頭進行匹配。

        document.write(patt.exec(str));

3 string.search(regExpObject) 該方法通過字串物件進行呼叫,檢索該字串中與正則表示式匹配的第一個子字串的開始的索引值,該方法預設進行全域性搜尋,忽略g字元,果找到了第一個匹配的子字串,則返回其開始的索引值,將不再向下進行尋找,否則將繼續尋找,直到字串結尾,如果未找到則返回-1,該方法的呼叫對正則表示式的lastIndex屬性沒有任何影響,該值始終為0,示例如下:

  var str3 = "1212,W3rld! WorLD";

  var patter3 = /world/ig;

        //輸出的索引為的位置為12

        document.write("-----------",str3.search(patter3));

        document.write("----",patter3.lastIndex);

// lastIndex的值為0,如論加不加g符,其值始終為0

        alert("patter3的lastIndex:"+patter3.lastIndex);

4 string.match(regExpObject) 該方法通過字串物件進行呼叫,該方法的功能為搜尋字串中與正則表示式匹配的所有的子字串,該方法的返回值為一個集合物件,包含多個字串物件,如果未找到一個匹配的子字串,則既返回值為null,預設為全域性搜尋,忽略g字元,不會忽略i字元,該方法對lastIndex的值不會有任何影響,該值始終為0,示例如下:

 var str4 = "zhangxiaoweizhangxiaoweiZhAng";

 var patter = /zhang/ig; 

 //返回的長度為3

  document.write("<br />",str4.match(patter).length);

  //lastIndex的值為:0  

  document.write("----",patter.lastIndex);