[英]Regex email address validation
有人可以向我解釋這個Java Regex嗎?
^[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)$
此正則表達式用於驗證電子郵件地址 。
如今,驗證電子郵件地址被認為是一種不好的做法( 停止使用regex驗證電子郵件地址 ),尤其是使用問題中的表達式時。 例如,這是一個更完整的表達式 。
至於此表達式,我們將其分為幾部分:
匹配字符串的開頭
^
匹配列表中的至少一個字符
[a-z0-9!#$%&'*+/=?^_`{|}~-]+
可以重復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)
字符串的結尾。
$
^ # 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
使用具體示例john@foo.com
。 電子郵件的第一部分john
將與^[a-z0-9!#$%&'*+/=?^_{|}~-]+
匹配。 該@
會,不錯,匹配@
。 域foo
和點由(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\\\.)+
匹配。 最后,TLD com
通過交替匹配(?:[AZ]{2}|com|org|net|gov|mil|biz|info|mobi|name|in|aero|jobs|museum)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.