【案例】Python - 用正则判断邮箱是否合法

时间:2024-02-24 21:13:16

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))

    输出结果