JavaScript正則表達式19例(12)

 (……續例11)正則表達式

例12:全局RegExp屬性
瀏覽器

  
  
  
  
  1. void function reg_12()  
  2. {  
  3.     var ver = Number(ScriptEngineMajorVersion() + "." + ScriptEngineMinorVersion())  
  4.     if (ver >= 5.5)  
  5.     {  
  6.         var s = "Live for nothing,die for something";  
  7.         var r = /\w+/g;  
  8.         while ((r.exec(s)) != null)  
  9.             alert(RegExp.index + "-" + RegExp.lastIndex + ": " + RegExp.lastMatch);  
  10.     }  
  11.     else 
  12.     {  
  13.         alert("只有JScript 5.5及以上版本支持該功能。");  
  14.     }  

行3:檢測瀏覽器的JavaScript腳本引擎,分別獲取主版本號和副版本號,而後用.字符鏈接起來並經過Number()方法轉換爲數字,從而判斷其是否爲5.5及以上的版本(低於5.5的版本不支持全局RegExp對象)。
行7:\w符號匹配包括下劃線的任何單詞字符,等價於'[A-Za-z0-9_]'。因爲使用了開關g,所以將匹配每個,注意,這裏並無使用^符號要求從字符串開始進行匹配。
行8:該循環只要正則表達式匹配到內容就循環,由於有開關g,因此每次都會向後移動一個單詞。
行9:經過訪問全局對象RegExp的三個屬性,顯示各個單詞的位置及內容。
其中,index屬性返回字符位置,它是查找字符串中第一個成功匹配的開始位置;lastIndex屬性返回字符位置,它是被查找字符串中下一次成功匹配的開始位置。這兩個屬性都是基於下標0開始的;顯然lastIndex屬性會比單詞的結束字符所在索引大1。lastMatch屬性返回正則表達式搜索過程當中的最後匹配的內容。
運行結果:while循環會執行6次,例如第1次顯示0-4:Liveide

(未完待續……)spa

相關文章
相關標籤/搜索