Java Regex电子邮件地址验证
有人能给我解释一下这个java正则表达式吗?Java Regex电子邮件地址验证,java,regex,email,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)$ 此正则表达式用于验证电子邮件地址 ^
^[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)$
此正则表达式用于验证电子邮件地址
^ # 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!#$%&'*+/=?^{{124;}-]+
匹配。@
将与@
匹配。域foo
,以及点,由(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\)+
匹配。最后,TLDcom
与交替的(?:[A-Z]{2}com | org | net | gov | mil | biz | info | mobi | name | in | aero | jobs | museum)
验证电子邮件地址现在被认为是不好的做法(),尤其是像你问题中这样的表达方式。例如,这里有一个例子
关于这个表达式,让我们把它分成几个部分:
匹配字符串的开头
^
至少与列表中的一个字符匹配
[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)
绳子的末端
$
这是你不理解的一般表达还是它的一部分?如果我可以问的话,你为什么需要理解regexp?你说的“解释”是什么意思?您不了解哪一部分?不要使用您不完全了解的复制粘贴正则表达式来匹配内容…您最好使用一些库来进行验证-例如Apache Commons-签出,这样您就不必了解复杂的正则表达式…为了理解正则表达式,您必须首先理解正则表达式。还有,@hovanesyan说的话。简单解释一下。谢谢你的朋友。