import re
email = 'someone@gmail.com'
email2 = 'bill.gates@microsoft.com'
email3 = '<Tom Paris> tom@voyager.org'
if re.match(r'^[0-9a-zA-Z][0-9a-zA-Z\_\.]+\@[0-9a-z]+\.(com|cn|org|net)$', email):
print ('ok')
else:
print ('failed')
if re.match(r'^[0-9a-zA-Z][0-9a-zA-Z\_\.]+\@[0-9a-z]+\.(com|cn|org|net)$', email2):
print ('ok')
else:
print ('failed')
if re.match(r'^(\<[0-9a-zA-Z\s_]+>)\s+([0-9a-zA-Z][0-9a-zA-Z._]+\@[0-9a-z]+.\w+)$', email3):
zz = re.match(r'^(\<[0-9a-zA-Z\s_]+>)\s+([0-9a-zA-Z][0-9a-zA-Z._]+\@[0-9a-z]+.\w+)$', email3)
print (zz.group(1))
print ('ok')
else:
print ('failed')
说明一下:
^[0-9a-zA-Z][0-9a-zA-Z_.]+\@[0-9a-z]+.(com|cn|org|net)
第一部分[0−9a−zA−Z]邮箱基本上是以数字或字母为开头;第二部分[0−9a−zA−Z.]+后面可以是数字、字母、下划线、小数点(目前了解是这样,可能有些邮箱比较特殊);第三部分[0−9a−z]+域名前半部分通常都是小写字母或数字,如gmail、163;第四部分(com|cn|org|net)
域名后半部分基本上是以这几个为结尾,还有 edu、gov 等暂未考虑进去。
所以,整个正则表达式还可以简写成 ^[\w][\w_.]+\@[\w]+.(com|cn|org|net)$