JavaScript中的正規表示式(1) (轉)

a400發表於2007-08-13
JavaScript中的正規表示式(1) (轉)[@more@]

 

  正則(regular expression)包含一個正規表示式(pattern)。它具有用正規表示式模式去匹配或代替一個串(string)中特定字元(或字符集合)的屬性(properties)和方法(methods)。 要為一個單獨的正規表示式新增屬性,可以使用正規表示式構造(constructor function),無論何時被的預設定的正規表示式擁有靜態的屬性(the predefined RegE has static properties that are set whenever any regular expression is used, 我不知道我翻得對不對,將原文列出,請自行翻譯)。

  • 建立:
    一個文字格式或正規表示式建構函式
    文字格式: /pattern/flags
    正規表示式建構函式: new RegExp("pattern"[,"flags"]);
  • 引數說明:
    pattern -- 一個正規表示式文字
    flags -- 如果存在,將是以下值:
    g: 全域性匹配
    i: 忽略大小寫
    gi: 以上組合

[注意] 文字格式的引數不用引號,而在用建構函式時的引數需要引號。如:/ab+c/i new RegExp("ab+c","i")是實現一樣的功能。在建構函式中,一些特殊字元需要進行轉意(在特殊字元前加"")。如:re = new RegExp("w+")

正規表示式中的特殊字元

字元 含意

做為轉意,即通常在""後面的字元不按原來意義解釋,如/b/匹配字元"b",當b前面加了反斜杆後//,轉意為匹配一個單詞的邊界。
-或-
對正規表示式功能字元的還原,如"*"匹配它前面元字元0次或多次,/a*/將匹配a,aa,aaa,加了""後,/a*/將只匹配"a*"。

^ 匹配一個輸入或一行的開頭,/^a/匹配"an A",而不匹配"An a" $ 匹配一個輸入或一行的結尾,/a$/匹配"An a",而不匹配"an A" * 匹配前面元字元0次或多次,/ba*/將匹配b,ba,baa,baaa + 匹配前面元字元1次或多次,/ba*/將匹配ba,baa,baaa ? 匹配前面元字元0次或1次,/ba*/將匹配b,ba (x) 匹配x儲存x在名為$1...$9的變數中 x|y 匹配x或y {n} 精確匹配n次 {n,} 匹配n次以上 {n,m} 匹配n-m次 [xyz] 字符集(character set),匹配這個集合中的任一一個字元(或元字元) [^xyz] 不匹配這個集合中的任何一個字元 [] 匹配一個退格符 匹配一個單詞的邊界 B 匹配一個單詞的非邊界 cX 這兒,X是一個控制符,/cM/匹配Ctrl-M d 匹配一個字數字符,/d/ = /[0-9]/ D 匹配一個非字數字符,/D/ = /[^0-9]/ 匹配一個換行符 匹配一個回車符 s 匹配一個空白字元,包括 , ,f, ,v等 S 匹配一個非空白字元,等於/[^ f v]/ 匹配一個製表符 v 匹配一個重直製表符 w 匹配一個可以組成單詞的字元(alphanumeric,這是我的意譯,含數字),包括下劃線,如[w]匹配"$5.98"中的5,等於[a-zA-Z0-9] W 匹配一個不可以組成單詞的字元,如[W]匹配"$5.98"中的$,等於[^a-zA-Z0-9]。

說了這麼多了,我們來看一些正規表示式的實際應用的例子:

E-地址驗證:
 function test_(strEmail) {
 var myReg = /^[_a-z0-9]+@([_a-z0-9]+.)+[a-z0-9]{2,3}$/;
 if(myReg.test(strEmail)) return true;
 return false;
 }
HTML程式碼的遮蔽
 function mask_HTMLCode(strInput) {
  var myReg = //;
  return strInput.replace(myReg, "<$1>");
 }


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10790690/viewspace-953191/,如需轉載,請註明出處,否則將追究法律責任。

相關文章