JavaScript中的match方法和search方法
search在一個字串對象(string object)中查找關鍵詞字串(規範表達式,regular expression),若匹配(即在目標字串中成功找到關鍵詞)則返回關鍵詞在目標字串中第一次出現的位置序列,反之,如果不匹配,就返回-1。以下示例在目標字串“樂豬網是一個編程入門網站,一個學習編程的樂園!”中查找字母“編程”,返回值為6,因為字母“編程”第一次出現時其常規序列排在第七位,而JS從0開始起算,字母“樂”序列為0,字母“豬”為1,字母“編程”當然就是6了:
- function KeySearch(Re, Str) {
-
var Result = (Str.search(Re) != -1 ? Str : "找不到匹配!");
- return Result;
- }
- window.onload = function() {
- var MyStr = "樂豬網是一個編程入門網站,一個學習編程的樂園!";
- var Re = "編程";
- var ShowStr = MyStr.search(Re);
- alert(ShowStr);
- alert(KeySearch("我是一個小小的程序員!", "編程"));
- }
我們看得出來,search方法只關心有無匹配,一旦找到匹配,就提供返回值,並且立刻中斷查找的執行。上例中的目標字串(MyStr)有兩個“編程”,後兩個search並不關心,因為條件已經滿足,它退出了自身的匹配查找工作。據此原理,當我們只需要驗證有無匹配的操作時,用search既簡單又高效。
match也是在目標字串對象中尋找與關鍵詞匹配與否的一個方法,它的強大功能在於通過關鍵詞的規則創建可以實現復雜搜尋功能,非常靈活。
不建立規則前提下,match可當作search來使用,語法也一樣,不同的是,它返回的是關鍵詞自身(若匹配)和null(若不匹配)——這沒有關系,如果只是為了檢測匹配。顯然地,這不是它存在於javascript世界中的理由,它定有不同於search的特色,即通過規則創建完成實現通盤匹配。看下面例子:
- var Str = "請問編程入門網是一個編程技能學習的網站嗎?";
- var ShowStr = Str.match(/編程/gi);
-
var Result = ShowStr + " 關鍵詞在原句中出現了 " + ShowStr.length + " 次";
- alert(Result);
上例中,第二行為創建規則表達式“/編程/gi”,雙反斜杠內的“編程”為搜尋關鍵詞,其後的參數“gi”表示全部匹配(同等於“g”,若只用“i”,只匹配一次)。這樣的規則用於match方法,將返回有規則的數組,其形式為“編程,編程”,還可用length方法得到數組的長度(例中結果為2)。
JavaScript中的match方法和search方法