“^\\w+([-_.]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,6})+$”
這個是我在Java程式中檢查Email格式是否合法的Regex,在網上看到一篇博文,與我用的運算式類似,轉載過來,供大家一起學習。
------------------------------以下為轉載文章-----------------------------------
Regex(regular expression, 常常縮寫為RegExp) 是一種用特殊符號編寫的模式,描述一個或多個文本字串。使用Regex匹配文本的模式,這樣指令碼就可以輕鬆的識別和操作文本。其實,Regex是值得大家花時間學習的。Regex不僅在javaScript 中有用,在其他許多地方也可以使用Regex,例如其他程式設計語言(比如Perl,Java,C#,Python 和PHP ),Apache 設定檔以及BBEdit 和TextMate 等文字編輯器。甚至Adobe Dreamweaver 和Microsoft Word( 在一定程度上) 使用Regex也可以實現更強大的搜尋和替換。
下面是一個驗證電子郵件的Regex
var re = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/ ;
下面我們開始剖析這個Regex
re 是一個變數, 用來儲存右邊的Regex,在javascript 中,聲明變數使用Var 關鍵字。
Regex的讀取順序是從左向右的
Regex總是以(/) 開頭和結尾,斜杠之間的所有內容都是Regex的組成部分。
脫字元(^) 表示我們要使用這個運算式來檢查以特定字串開頭的字串。如果去掉脫字元,那麼即使字串開頭有一堆垃圾字元,電子郵件地址也可能被認為是有效。
運算式\w 表示任意單一字元,包括a~z 、A~Z 、0~9 或底線。電子郵件必須這些字元之一開頭。
加號+ 表示我們要尋找前麵條目的一次或多次出現。
園括弧() 表示一個組,這意味著後面要引用圓括弧中的所有內容,所以現在將它們放在一個組中。
放括弧[] 用來表示可以出現其中的任意一個字元。在這個樣本中,方括弧內包含字元\.- 。我們希望允許使用者輸入焦點號或連字號,但是點號對於Regex有特殊的意義,所以需要在它前面加上反斜線\, 在特殊字元前加反斜線表示“對字元轉義”,經轉義後的字元表示其本身意義。因為有方括弧,輸入字串在這個位置可以有一個點號或一個連字號,但是兩種不能同時存在。
問號。表示前面的條目可以出現一次或不出現。所以電子郵件地址的第一部分中可以有一個點號或一個連字號,也可以沒有。
在。後面,再次使用\w+ ,表示點號或連字號後面必須有其他字元。
在()後面出現的* 號,表示前面的條目可以出現零次或多次。所以圓括弧中的內容可以出現零次或多次。
@ 字元代表其本身,沒有任何其他意義,這個字元位於電子郵件地址和網域名稱之間。
@ 字元後再次出現\w+ ,表示@ 後必須出現字元。在此之後,再次出現([\.-]?\w+)*, 表示電子郵件地址的尾碼中允許出現點號或連字號。
然後,在一對圓括弧中建立另一個組(\.\w{2,3}), 表示我們希望找到一個點號,後面跟一些字元。在這個樣本中,花括弧中的數字表示前面的條目可以出現2 到3 次。在這個組的後面是一個+ 號,表示前面的條目(這個組)必須出現一次或多次。這會匹配.com 或.edu 之類的,也與ox.ac.uk 匹配。
最後,Regex的末尾是一個貨幣符號$ ,表示匹配的字串必須在這裡結束。斜杠結束Regex。