匹配合法email的正則式

2021-06-08 05:02:52 字數 3115 閱讀 5302

匹配合法email的正則式 

其實,正規表示式(regularexpression)是乙個正規表示式就是由普通字元(例如字元 a 到 z)以及特殊字元(稱為元字元)組成的文字模式。該模式描述在查詢文字主體時待匹配的乙個或多個字串。正規表示式作為乙個模板,將某個字元模式與所搜尋的字串進行匹配。

使用正規表示式,就可以:

1. 測試字串的某個模式。例如,可以對乙個輸入字串進行測試,看在該字串是否存在乙個**號碼模式或乙個信用卡號碼模式。這稱為資料有效性驗證。

2. 替換文字。可以在文件中使用乙個正規表示式來標識特定文字,然後可以全部將其刪除,或者替換為別的文字。

3. 根據模式匹配從字串中提取乙個子字串。可以用來在文字或輸入欄位中查詢特定文字。

例如,如果需要搜尋整個 web 站點來刪除某些過時的材料並替換某些html 格式化標記,則可以使用正規表示式對每個檔案進行測試,看在該檔案中是否存在所要查詢的材料或 html 格式化標記。用這個方法,就可以將受影響的檔案範圍縮小到包含要刪除或更改的材料的那些檔案。然後可以使用正規表示式來刪除過時的材料,最後,可以再次使用正規表示式來查詢並替換那些需要替換的標記。

另乙個說明正規表示式非常有用的示例是一種其字串處理能力還不為人所知的語言。vbscript 是 visual basic 的乙個子集,具有豐富的字串處理功能。與 c 類似的 visual basic scripting edition 則沒有這一能力。正規表示式給 visual basic scripting edition 的字串處理能力帶來了明顯改善。不過,可能還是在 vbscript 中使用正規表示式的效率更高,它允許在單個表示式中執行多個字串操作。

正是由於「正規表示式」的強大功能,才使得微軟慢慢將正規表示式物件移植到了視窗系統上面。在書寫正規表示式的模式時使用了特殊的字元和序列。下表描述了可以使用的字元和序列,並給出了例項。

^ :匹配輸入的開始位置。

$ :匹配輸入的結尾。

* :匹配前乙個字元零次或幾次。例如, "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次。例如, "o " 不能與 "bob 中的 "o " 匹配,但是可以與 "foooood "中的前兩個o匹配。

:n 為非負的整數。匹配至少n次。例如, "o "不匹配 "bob "中的 "o ",但是匹配 "foooood "中所有的o。 "o "等價於 "o+ "。 "o "等價於 "o* "。

:m 和 n 為非負的整數。匹配至少 n 次,至多 m 次。例如, "o " 匹配 "fooooood "中前三個o。 "o "等價於 "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。否則,只有前兩個字元被視為表示式的一部分。允許在正規表示式中使用ascii碼。

\xn:匹配n,其中n是乙個十六進製制的換碼值。十六進製製換碼值必須恰好為兩個數字長。例如, "\x41 "匹配 "a "。 "\x041 "等價於 "\x04 " 和 "1 "。允許在正規表示式中使用 ascii 碼。

匹配 Email 位址的正規表示式

匹配 email 位址的正規表示式 表示式含義 a w a z d a z z i完整的正規表示式 正規表示式開始 a匹配字串的開頭 w 乙個或多個字母 加號 連字元 或點號 匹配 符號 a z d 乙個或多個小寫字母 數字 連字元或點號 匹配點號 a z 乙個或多個小寫字母 z匹配字串結尾 結束正...

正則式匹配問題

請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 ab ac a 匹配,但是與 aa.a 和 ab a 均不匹配。樣例輸入 s aa p a ...

正則式取出匹配的資料

原始字串wcdma ommoid g0uj599c 1 sbn 1101 me 1101,eqrncid 1101,rackno 2,shelfno 2,slotno 3,cpu 1要求通過正規表示式能夠把字串eqrncid 1101,rackno 2,shelfno 2,slotno 3,cpu ...