【案例】Python - 用正則判斷郵箱是否合法


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

    輸出結果

 

 

 

 

 

 

    

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM