1. 程式人生 > >JavaScript中的match方法和search方法

JavaScript中的match方法和search方法

reg mys search result 規範 全部 找工作 它的 高效

search在一個字串對象(string object)中查找關鍵詞字串(規範表達式,regular expression),若匹配(即在目標字串中成功找到關鍵詞)則返回關鍵詞在目標字串中第一次出現的位置序列,反之,如果不匹配,就返回-1。以下示例在目標字串“樂豬網是一個編程入門網站,一個學習編程的樂園!”中查找字母“編程”,返回值為6,因為字母“編程”第一次出現時其常規序列排在第七位,而JS從0開始起算,字母“樂”序列為0,字母“豬”為1,字母“編程”當然就是6了:

  1. function KeySearch(Re, Str) {
  2. var Result = (Str.search(Re) != -1 ? Str : "找不到匹配!");
  3. return Result;
  4. }
  5. window.onload = function() {
  6. var MyStr = "樂豬網是一個編程入門網站,一個學習編程的樂園!";
  7. var Re = "編程";
  8. var ShowStr = MyStr.search(Re);
  9. alert(ShowStr);
  10. alert(KeySearch("我是一個小小的程序員!", "編程"));
  11. }


我們看得出來,search方法只關心有無匹配,一旦找到匹配,就提供返回值,並且立刻中斷查找的執行。上例中的目標字串(MyStr)有兩個“編程”,後兩個search並不關心,因為條件已經滿足,它退出了自身的匹配查找工作。據此原理,當我們只需要驗證有無匹配的操作時,用search既簡單又高效。


match也是在目標字串對象中尋找與關鍵詞匹配與否的一個方法,它的強大功能在於通過關鍵詞的規則創建可以實現復雜搜尋功能,非常靈活。

不建立規則前提下,match可當作search來使用,語法也一樣,不同的是,它返回的是關鍵詞自身(若匹配)和null(若不匹配)——這沒有關系,如果只是為了檢測匹配。顯然地,這不是它存在於javascript世界中的理由,它定有不同於search的特色,即通過規則創建完成實現通盤匹配。看下面例子:

  1. var Str = "請問編程入門網是一個編程技能學習的網站嗎?";
  2. var ShowStr = Str.match(/編程/gi);
  3. var Result = ShowStr + " 關鍵詞在原句中出現了 " + ShowStr.length + " 次";
  4. alert(Result);


上例中,第二行為創建規則表達式“/編程/gi”,雙反斜杠內的“編程”為搜尋關鍵詞,其後的參數“gi”表示全部匹配(同等於“g”,若只用“i”,只匹配一次)。這樣的規則用於match方法,將返回有規則的數組,其形式為“編程,編程”,還可用length方法得到數組的長度(例中結果為2)。

JavaScript中的match方法和search方法