1>用正则判断QQ邮箱是否合法
这里QQ邮箱指QQ号+@qq.com结尾
分析:1.QQ最短5位最长11位数
2.以@qq.com结尾
3.不能以0开头
直接上代码
import re
def is_valid_email(email):
c = '邮箱格式合法:'
d = '邮箱格式不合法:'
ex_email = re.compile(r'^[1-9][0-9]{4,10}@qq\.com')
result = ex_email.match(email)
# print(result)
if result:
return c + email
else:
return d + email
qqemail = '1348767137@qq.com'
print(is_valid_email(qqemail))
qqemail = '1348@qq.com'
print(is_valid_email(qqemail))
qqemail = '134876713777@qq.com'
print(is_valid_email(qqemail))
输出结果:
2>验证电子邮件字符串是否合法
要求: 1.@之前不能包含(中杠)-,及其他$&等符号,但可以包含.,开头字母和数字
2.统一命名is_valid_email()
3.@之后数字或者字母
4.后缀.com|.gov|.net任一结尾
import re
def is_valid_email(email):
c = '邮箱格式合法:'
d = '邮箱格式不合法:'
ex_email = re.compile(r'^[\w][a-zA-Z1-9.]{4,19}@[a-zA-Z0-9]{2,3}.[com|gov|net]')
result = ex_email.match(email)
# print(result)
if result:
return c + email
else:
return d + email
ex_email = '1348767137@qq.gov'
ex_email1 = 'a3487.67137@qq.com'
ex_email2 = 'A3487.67137@qq.com'
ex_email2 = '.A348767137@qq.com'
print(is_valid_email(ex_email))
print(is_valid_email(ex_email1))
print(is_valid_email(ex_email2))
输出结果:
2>提取合法的电子名称
如输入1348767137@qq.com返回@前边的部分1348767137
这里引入到group()的用法
正则表达式中,group()用来提出分组截获的字符串,()用来分组
import re
qqemail = '1348767137@qq.com'
# 这里加了三个分组 @前面为分组1 @本身为分组2 @后面为分组3
ex_email = re.compile(r'(^[\w][a-zA-Z1-9.]{4,19})(@)([a-zA-Z0-9]{2,3}.com)')
result = ex_email.match(qqemail)
# group()参数为空时返回全部分组
print('参数为0时:' + result.group())
# group()参数为1时返回第一个分组
print('参数为1时:' + result.group(1))
# group()参数为2时返回第二个分组
print('参数为2时:' + result.group(2))
# group()参数为3时返回第三个分组
print('参数为3时:' + result.group(3))
# 因此可以看出group分组从1开始 不是从0开始
贴上结果:
下面来完成提取合法的电子名称:
贴上代码:
import re
def name_of_email(email):
c = '电子邮箱格式合法,'
d = '电子邮箱格式不合法:'
ex_email = re.compile(r'(^[\w][a-zA-Z1-9.]{4,19})@[a-zA-Z0-9]{2,3}.com')
result = ex_email.match(email)
# print(result.group())
if result:
e = '\n电子名称为:' + result.group(1)
return c + email + e
else:
return d + email
ex_email = '1348767137@qq.com'
ex_email1 = '137@qq.com'
print(name_of_email(ex_email))
print(name_of_email(ex_email1))
输出结果