判断一个字符串是否为邮件地址的函数
发布时间:2023-07-04 21:39:31
判断一个字符串是否为邮件地址的函数是一个常见的问题。邮件地址通常包含一个电子邮件用户名和一个邮件域名,它们之间通过“@”符号分隔。下面是一个用来判断字符串是否为邮件地址的函数的示例代码:
def is_email_address(string):
# 检查字符串是否为空
if len(string) == 0:
return False
# 检查字符串是否包含"@"
if "@" not in string:
return False
# 检查"@"符号是否在正确的位置
if string.index("@") == 0 or string.index("@") == len(string)-1:
return False
# 检查字符串中是否只有一个"@"符号
if string.count("@") != 1:
return False
# 将字符串分割成用户名和域名部分
username, domain = string.split("@")
# 检查用户名部分是否合法
if len(username) == 0:
return False
# 检查域名部分是否合法
if len(domain) == 0:
return False
# 检查域名部分是否包含"."符号
if "." not in domain:
return False
# 检查域名部分是否以"."符号结尾
if domain.endswith("."):
return False
# 检查域名中是否只有一个"."符号
if domain.count(".") != 1:
return False
# 检查域名的字母部分是否合法
valid_chars = set("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-")
for char in domain.split(".")[0]:
if char not in valid_chars:
return False
return True
这个函数根据以下几个条件来判断一个字符串是否为邮件地址:
1. 字符串不能为空。
2. 字符串必须包含"@"符号。
3. "@"符号不能在字符串的开头或末尾。
4. 字符串中只能有一个"@"符号。
5. 字符串可以成功分割为用户名和域名两部分。
6. 用户名部分不能为空。
7. 域名部分不能为空。
8. 域名部分必须包含一个"."符号。
9. 域名部分不能以"."符号结尾。
10. 域名中只能有一个"."符号。
11. 域名的字母部分只能包含小写字母、大写字母、数字和"-"字符。
如果一个字符串满足以上所有条件,则函数返回True,否则返回False。
这个函数可以用来判断一个输入的字符串是否为合法的邮件地址。例如:
print(is_email_address("john@example.com")) # True
print(is_email_address("john.doe@example.com")) # True
print(is_email_address("john@example")) # False
print(is_email_address("@example.com")) # False
print(is_email_address("john@.com")) # False
print(is_email_address("john@-example.com")) # False
在上面的示例中,第一个和第二个字符串满足邮件地址的所有条件,所以函数返回True。而其余的字符串不满足某个条件,所以函数返回False。
