匹配合法email的正則式 其實,Regex(RegularExpression)是一個Regex就是由一般字元(例如字元 a 到 z)以及特殊字元(稱為元字元)組成的文字模式。該模式描述在尋找文字主體時待匹配的一個或多個字串。Regex作為一個模板,將某個字元模式與所搜尋的字串進行匹配。 使用Regex,就可以: 1. 測試字串的某個模式。例如,可以對一個輸入字串進行測試,看在該字串是否存在一個電話號碼模式或一個信用卡號碼模式。這稱為資料有效性驗證。 2. 替換文本。可以在文檔中使用一個Regex來標識特定文字,然後可以全部將其刪除,或者替換為別的文字。 3. 根據模式比對從字串中提取一個子字串。可以用來在文本或輸入欄位中尋找特定文字。 例如,如果需要搜尋整個 web 網站來刪除某些過時的材料並替換某些HTML 格式化標記,則可以使用Regex對每個檔案進行測試,看在該檔案中是否存在所要尋找的材料或 HTML 格式化標記。用這個方法,就可以將受影響的檔案範圍縮小到包含要刪除或更改的材料的那些檔案。然後可以使用Regex來刪除過時的材料,最後,可以再次使用Regex來尋找並替換那些需要替換的標記。 另一個說明Regex非常有用的樣本是一種其字串處理能力還不為人所知的語言。VBScript 是 Visual Basic 的一個子集,具有豐富的字串處理功能。與 C 類似的 Visual Basic Scripting Edition 則沒有這一能力。Regex給 Visual Basic Scripting Edition 的字串處理能力帶來了明顯改善。不過,可能還是在 VBScript 中使用Regex的效率更高,它允許在單個運算式中執行多個字串操作。 正是由於“Regex”的強大功能,才使得微軟慢慢將Regex對象移植到了視窗系統上面。在書寫Regex的模式時使用了特殊的字元和序列。下表描述了可以使用的字元和序列,並給出了執行個體。 字元描述: \:將下一個字元標記為特殊字元或字面值。例如 "n "與字元 "n "匹配。 "\n "與分行符號匹配。序列 "\\ "與 "\ "匹配, "\( "與 "( "匹配。 ^ :匹配輸入的開始位置。 $ :匹配輸入的結尾。 * :匹配前一個字元零次或幾次。例如, "zo* "可以匹配 "z "、 "zoo "。 + :匹配前一個字元一次或多次。例如, "zo+ "可以匹配 "zoo ",但不匹配 "z "。 ? :匹配前一個字元零次或一次。例如, "a?ve? "可以匹配 "never "中的 "ve "。 .:匹配分行符號以外的任何字元。 (pattern) 與模式比對並記住匹配。匹配的子字串可以從作為結果的 Matches 集合中使用 Item [0]...[n]取得。如果要匹配括弧字元(和 ),可使用 "\( " 或 "\) "。 x|y:匹配 x 或 y。例如 "z|food " 可匹配 "z " 或 "food "。 "(z|f)ood " 匹配 "zoo " 或 "food "。 {n}:n 為非負的整數。匹配恰好n次。例如, "o{2} " 不能與 "Bob 中的 "o " 匹配,但是可以與 "foooood "中的前兩個o匹配。 {n,} :n 為非負的整數。匹配至少n次。例如, "o{2,} "不匹配 "Bob "中的 "o ",但是匹配 "foooood "中所有的o。 "o{1,} "等價於 "o+ "。 "o{0,} "等價於 "o* "。 {n,m} :m 和 n 為非負的整數。匹配至少 n 次,至多 m 次。例如, "o{1,3} " 匹配 "fooooood "中前三個o。 "o{0,1} "等價於 "o? "。 [xyz] :一個字元集。與括弧中字元的其中之一匹配。例如, "[abc] " 匹配 "plain "中的 "a "。 [^xyz] :一個否定的字元集。匹配不在此括弧中的任何字元。例如, "[^abc] " 可以匹配 "plain "中的 "p ". [a-z] :表示某個範圍內的字元。與指定區間內的任何字元匹配。例如, "[a-z] "匹配 "a "與 "z "之間的任何一個小寫字母字元。 [^m-z] :否定的字元區間。與不在指定區間內的字元匹配。例如, "[m-z] "與不在 "m "到 "z "之間的任何字元匹配。 \b :與單詞的邊界匹配,即單詞與空格之間的位置。例如, "er\b " 與 "never "中的 "er "匹配,但是不匹配 "verb "中的 "er "。 \B :與非單詞邊界匹配。 "ea*r\B "與 "never early "中的 "ear "匹配。 \d :與一個數字字元匹配。等價於[0-9]。 \D :與非數位字元匹配。等價於[^0-9]。 \f :與分頁符匹配。 \n :與分行符號字元匹配。 \r :與斷行符號字元匹配。 \s :與任何白字元匹配,包括空格、定位字元、分頁符等。等價於 "[ \f\n\r\t\v] "。 \S :與任何非空白的字元匹配。等價於 "[^ \f\n\r\t\v] "。 \t :與定位字元匹配。 \v :與垂直定位字元匹配。 \w :與任何單詞字元匹配,包括底線。等價於 "[A-Za-z0-9_] "。 \W :與任何非單詞字元匹配。等價於 "[^A-Za-z0-9_] "。 \num :匹配 num個,其中 num 為一個正整數。引用回到記住的匹配。例如, "(.)\1 "匹配兩個連續的相同的字元。 \n:匹配 n,其中n 是一個八進位換碼值。八進位換碼值必須是 1, 2 或 3 個數字長。 例如, "\11 " 和 "\011 " 都與一個定位字元匹配。 "\0011 "等價於 "\001 " 與 "1 "。八進位換碼值不得超過 256。否則,只有前兩個字元被視為運算式的一部分。允許在Regex中使用ASCII碼。 \xn:匹配n,其中n是一個十六進位的換碼值。十六進位換碼值必須恰好為兩個數字長。例如, "\x41 "匹配 "A "。 "\x041 "等價於 "\x04 " 和 "1 "。允許在Regex中使用 ASCII 碼。