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))
輸出結果