有人可以請解釋這個java正則表達式給我?正則表達式的電子郵件地址驗證
^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+(?:[A-Z]{2}|com|org|net|gov|mil|biz|info|mobi|name|in|aero|jobs|museum)$
這正則表達式是用於驗證電子郵件地址。
有人可以請解釋這個java正則表達式給我?正則表達式的電子郵件地址驗證
^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+(?:[A-Z]{2}|com|org|net|gov|mil|biz|info|mobi|name|in|aero|jobs|museum)$
這正則表達式是用於驗證電子郵件地址。
驗證電子郵件地址現在被認爲是不好的做法(stop validating email addresses with regex),特別是在您的問題中使用這種表達方式。例如,這是一個more complete expression。
至於這種表達,讓我們打破它在部分:
開頭匹配字符串從
^
匹配至少一個字符列表
[a-z0-9!#$%&'*+/=?^_`{|}~-]+
非捕獲的(see backreference )組可以重複0..n次,匹配.
,然後至少有一個字符從列表中。
(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*
只是這種性格
@
非捕獲在這個名單[a-z0-9]
,然後可能更多字符從下面的列表中匹配一個字符組。匹配的字符串必須以[a-z0-9]開始和結束,並且其內部可以有[a-z0-9-]。
(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+
非捕獲組匹配2個大寫字母或其中一個單詞。
(?:[A-Z]{2}|com|org|net|gov|mil|biz|info|mobi|name|in|aero|jobs|museum)
字符串結尾。
$
+1使用驗證電子郵件,而不是... – hovanessyan
只是解釋。謝謝你的伴侶。 –
^ # Beginning of the line
[a-z0-9!#$%&'*+/=?^_`{|}~-]+ # One or more (+) characters from the
bracket expression, i.e., letters [a-z],
numbers [0-9], !, $, %, et cetera
(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)* # Zero or more (*) of the above
expression, preceded by a dot \\.
@ # Literal @
(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+ # A digit or a letter, followed by
optional digits, letters, or dashes,
followed by a a dot
(?:[A-Z]{2}|com|org|net...) # Country code ([A-Z]{2}), or a top level
domain, such as com, org, net.
$ # End of the line
使用一個具體的例子,[email protected]
。電子郵件的第一部分john
將與^[a-z0-9!#$%&'*+/=?^_{|}~-]+
匹配。 @
將與@
匹配。域foo
,以及點,匹配(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+
。最後,TLD com
通過交替(?:[A-Z]{2}|com|org|net|gov|mil|biz|info|mobi|name|in|aero|jobs|museum)
進行匹配。
這是您不明白的基因表達或它的一部分嗎?如果我可能會問,爲什麼你需要了解正則表達式? – Nicholas
你是什麼意思「解釋」它?你不瞭解什麼部分? –
不要使用複製粘貼的正則表達式,你不完全理解匹配的東西...你最好使用一些庫來做驗證 - 例如Apache Commons - 檢查出http://commons.apache .org/validator/apidocs/org/apache/commons/validator/routines/EmailValidator.html因此您不必理解複雜的正則表達式... – hovanessyan