100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 利用Python和正则表达式验证hotmail邮箱的格式

利用Python和正则表达式验证hotmail邮箱的格式

时间:2019-06-02 23:11:44

相关推荐

利用Python和正则表达式验证hotmail邮箱的格式

利用Python和正则表达式验证hotmail邮箱的格式

因为想学Python的缘故再加上老师让练习正则表达式,于是就有了这篇博客。再加上hotmail邮箱的格式还是很丰富的,这样的话也多了些乐趣。

首先分享一下我自己验证得到的格式要求:

开头必须是字母。反例:1eee@结尾不能是.反例:eee.@不能1个以上的.连用 反例:eee..eee@除去@,最大长度是64个字符,最短是1个字符字符串中只能包含[a-zA-Z0-9-_.]。 反例:eee+eee@必须以"@"结尾。 反例fefefefefefe

其他的比如两个-连用和两个_连用都是可以的,比如e--__@,亲测通过。

自己也可以想一些测试点试一下:点我跳转

代码

# !/usr/bin/env python3# -*- coding: utf-8 -*-# 用途:hotmail邮箱地址格式验证# 作者:软件-1802-张伟涛# 验证规则:#1.开头必须是字母 反例:1eee@#2.结尾不能是"." 反例:eee.@#3.不能1个以上的"."连用 反例:eee..eee@#4.除去"@",最大长度是64个字符,最短是1个字符#5.字符串中只能包含"[a-zA-Z0-9-_.]"。 反例:eee+eee@#6.必须以"@"结尾。 反例fefefefefefe# 说明:#1.Bug标识验证不通过的原因或者验证通过#2.Debug为0为正常使用模式;为1时为debug模式,当处于debug模式时程序会输出相应步骤的信息import reDebug = 0Bug = 0def debug():global Bugif not Debug:returnif Bug == 1:print('字符串过长或过短')elif Bug == 2:print('没有以"@"结尾或者只有"@"')elif Bug == 3:print('开头不是字母')elif Bug == 4:print('有多个"."连用')elif Bug == 5:print('以"."结尾')elif Bug == 6:print('有非法字符')elif Bug == 0:print('满足全部条件')# 正则表达式版本def cheMailAddress_RE(str):global BugBug = 0s = re.sub(r"@$", "", str)# 除去后缀if len(str) > 76 or len(str) < 12:Bug = 1 # 加上"@hotmail"之后最长是76(64 + 12)个字符,最短是13(1 + 12)个字符elif re.match(r".+@$", str) == None:Bug = 2 # 必须以"@"结尾elif re.match(r"[a-zA-Z]", s) == None:Bug = 3 # 开头必须是字母elif re.search(r"\.\.", s) != None:Bug = 4 #不能有1个以上的"."连用elif re.match(r".+\.$", s) != None:Bug = 5 #不能以"."结尾elif re.search(r"[^a-zA-Z0-9-_.]", s) != None:Bug = 6 #只能包含"[a-zA-Z0-9-_.]"#满足以上即为正确格式debug()#输出调试信息if Bug == 0:return 1else:return 0for i in range(10):if cheMailAddress_RE(input('请输入一个邮箱地址:')):print('格式正确!')else:print('格式有问题……')

代码(不用正则表达式版本)

# !/usr/bin/env python3# -*- coding: utf-8 -*-# 用途:hotmail邮箱地址格式验证# 作者:软件-1802-张伟涛# 验证规则:#1.开头必须是字母 反例:1eee@#2.结尾不能是"." 反例:eee.@#3.不能1个以上的"."连用 反例:eee..eee@#4.除去"@",最大长度是64个字符,最短是1个字符#5.字符串中只能包含"[a-zA-Z0-9-_.]"。 反例:eee+eee@#6.必须以"@"结尾。 反例fefefefefefe# 说明:#1.Bug标识验证不通过的原因或者验证通过#2.Debug为0为正常使用模式;为1时为debug模式,当处于debug模式时程序会输出相应步骤的信息import reDebug = 0Bug = 0def debug():global Bugif not Debug:returnif Bug == 1:print('字符串过长或过短')elif Bug == 2:print('没有以"@"结尾或者只有"@"')elif Bug == 3:print('开头不是字母')elif Bug == 4:print('有多个"."连用')elif Bug == 5:print('以"."结尾')elif Bug == 6:print('有非法字符')elif Bug == 0:print('满足全部条件')# 非正则表达式版本def cheMailAddress(str):global BugBug = 0if len(str) > 76 or len(str) < 12:Bug = 1 # 加上"@hotmail"之后最长是76(64 + 12)个字符,最短是13(1 + 12)个字符elif str[-12:] != r"@" or len(str) == 12:Bug = 2 # 必须以"@"结尾elif not str[0].isalpha():Bug = 3 # 开头必须是字母elif str.find('..') != -1:Bug = 4 #不能有1个以上的"."连用elif ord(str[-13]) == ord('.'):Bug = 5 #不能以"."结尾else:for c in str[:-12]:if not (c.isalnum() or c == '-' or c == '_' or c == '.'):Bug = 6 #只能包含"[a-zA-Z0-9-_.]"#满足以上即为正确格式debug() #输出调试信息if Bug == 0:return 1else:return 0for i in range(10):if cheMailAddress(input('请输入一个邮箱地址:')):print('格式正确!')else:print('格式有问题……')

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。