javascript的search和match方法
search和match都是javascript基于string的方法,都與字符匹配有關。
String類是不可變的,對String類的任何改變,都是返回一個新的String類對象。String 對象是 System.Char 對象的有序集合,用于表示字符串。String 對象的值是該有序集合的內容,并且該值是不可變的。
search在一個字串對象(string object)中查找關鍵詞字串(規范表達式,regular expression),若匹配(即在目標字串中成功找到關鍵詞)則返回關鍵詞在目標字串中***次出現的位置序列,反之,如果不匹配,就返回-1。以下示例在目標字串“HELLO WORLD!”中查找字母“L”,返回值為2,因為字母“L”***次出現時其常規序列排在第三位,而JS從0開始起算,字母“H”序列為0,字母“E”為1,字母“L”當然就是2了:
- MyStr="HELLO WORLD!";
- re="L";
- showstr=MyStr.search(re);
- alert(showstr);
我們看得出來,search方法只關心有無匹配,一旦找到匹配,就提供返回值,并且立刻中斷查找的執行。上例中的目標字串(MyStr)有三個字母“L”,后兩個search并不關心,因為條件已經滿足,它退出了自身的匹配查找工作。據此原理,當我們只需要驗證有無匹配的操作時,用search既簡單又高效。以下再給出一個示例,這是一個自定義函數,它使用search方法簡捷地完成字符匹配檢測操作,若有匹配則將目標字串完整提取出來:
- function key_search(re, str){
- echo = (str.search(re)!=-1 ? str : "無匹配");
- return(echo);
- }
match也是在目標字串對象中尋找與關鍵詞匹配與否的一個方法,它的強大功能在于通過關鍵詞的規則創建可以實現復雜搜尋功能,非常靈活。
不建立規則前提下,match可當作search來使用,語法也一樣,不同的是,它返回的是關鍵詞自身(若匹配)和null(若不匹配)——這沒有關系,如果只是為了檢測匹配。顯然地,這不是它存在于javascript世界中的理由,它定有不同于search的特色,即通過規則創建完成實現通盤匹配。看下面例子:
- str = "黑馬在線動力是黑馬的網站。是嗎,黑馬?";
- new_ar = str.match(/黑馬/gi);
- echo=new_ar + " 關鍵詞在原句中出現了 " + new_ar.length + " 次";
- alert(echo);
上例中,第二行為創建規則表達式“/黑馬/gi”,雙反斜杠內的“黑馬”為搜尋關鍵詞,其后的參數“gi”表示全部匹配(同等于“g”,若只用“i”,只匹配一次)。這樣的規則用于match方法,將返回有規則的數組,其形式為“黑馬,黑馬,黑馬”,還可用length方法得到數組的長度(例中結果為3)。
【編輯推薦】