正则表达式电子邮件地址验证

Joy*_*ine 0 java regex email

有人可以向我解释这个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)$
Run Code Online (Sandbox Code Playgroud)

此正则表达式用于验证电子邮件地址.

Iva*_*lik 12

验证电子邮件地址现在被认为是不好的做法(停止使用正则表达式验证电子邮件地址),尤其是在您的问题中使用此类表达式.例如,这是一个更完整的表达.

至于这个表达式,让我们分解它:

匹配字符串的开头

^
Run Code Online (Sandbox Code Playgroud)

匹配列表中的至少一个字符

[a-z0-9!#$%&'*+/=?^_`{|}~-]+
Run Code Online (Sandbox Code Playgroud)

非捕获(参见反向引用)组,可以重复0..n次,匹配.列表中的a 和然后至少一个字符.

(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*
Run Code Online (Sandbox Code Playgroud)

只是这个角色

@
Run Code Online (Sandbox Code Playgroud)

非捕获组匹配此列表中的一个字符[a-z0-9],然后可能包含以下列表中的更多字符.匹配的字符串必须以[a-z0-9]开头和结尾,内部可以有[a-z0-9-].

(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+
Run Code Online (Sandbox Code Playgroud)

匹配2个大写字母或其中一个单词的非捕获组.

(?:[A-Z]{2}|com|org|net|gov|mil|biz|info|mobi|name|in|aero|jobs|museum)
Run Code Online (Sandbox Code Playgroud)

字符串结束.

$
Run Code Online (Sandbox Code Playgroud)