JavaScript正則表達式19例(4)

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

例4:多行、全文定位符匹配
數組

  
  
           
  
  
  1. void function reg_04()  
  2. {  
  3.     var s = "Live for nothing,\ndie for something"//多行  
  4.     var r1 = /^.*/g, //匹配1次  
  5.         r2 = /^.*/mg, //匹配2次  
  6.         r3 = /^.*/m, //匹配1次  
  7.         r4 = /^.*/; //匹配1次  
  8.     for (n = 1; n <= 4; n++)  
  9.     {  
  10.         t = "alert(s.match(r" + n + ").length);";  
  11.         eval(t);  
  12.         t = "r" + n;  
  13.         for (i = 0; i < s.match(eval(t)).length; i++)  
  14.         {  
  15.             alert(s.match(eval(t))[i]);  
  16.         }  
  17.     }  

這個例子有些意思,主要區分多行開關m和全文匹配開關g
字符串s中包含了一個\n,即換行符,這將致使後面的匹配過程須要考慮多行的問題。
r1~r4都要求從行首匹配,都是匹配任意多個任意字符。
r1只帶有開關g,故而匹配所有,因爲未加多行開關m,故而只識別第一行,即匹配:Live for nothing,
r2帶有開關gmm將字符串解析爲多行(兩行),g要求匹配所有可匹配的內容,因此會匹配兩次。
r3只帶有開關m,可將字符串解析爲多行,但因爲沒有開關g,故而,只匹配第一次。
r4不帶任何開關,字符串只會識別第一行,且沒有開關g,故而只匹配一次。
行10:Sring對象的match()方法的返回值實際上是一個數組對象,能夠經過其length屬性獲取其中的元素個數,即匹配了多少次。
行13~行16:這個for循環逐一枚舉match()返回數組中的內容。
運行結果:能夠看到,只有正則表達式r2會匹配兩次。ide

(未完待續……)spa

相關文章
相關標籤/搜索