(……續例11)正則表達式
例12:全局RegExp屬性
瀏覽器
- void function reg_12()
- {
- var ver = Number(ScriptEngineMajorVersion() + "." + ScriptEngineMinorVersion())
- if (ver >= 5.5)
- {
- var s = "Live for nothing,die for something";
- var r = /\w+/g;
- while ((r.exec(s)) != null)
- alert(RegExp.index + "-" + RegExp.lastIndex + ": " + RegExp.lastMatch);
- }
- else
- {
- alert("只有JScript 5.5及以上版本支持該功能。");
- }
- }
行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:Live。ide
(未完待續……)spa