簡體   English   中英

正則表達式電子郵件地址驗證

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM