本练习来自于哈希编程第90题,题目网址:

https://edu.py2fun.com/learn#/problemset/all/code/696?redirect=%2Fproblemset%2Fall%2F3

1. 题目要求

编写一个程序来验证一个邮箱地址是否合法。

定义函数is_email_valid(),参数为email。

在函数内,如果邮箱email满足下面提到的条件,则返回True,否则返回False。 要求邮箱有效,必须满足以下条件: 1. 字符串必须包含一个@字符。 2. 字符串必须包含一个.字符。 3. @必须有至少一个字符在它之前。 4. .和@必须处于适当的位置。

例如,hello.email@com是无效的,而john.smith@email.com是有效的。

示例输入1:user@website.com 示例输出1:True

示例输入2:web.user@com 示例输出2: False

解释:测试输入user@website.com返回True,因为它满足程序中指定的有效邮箱地址的所有条件。

2. 解题思路

由于“@”和“.”两个字符需要按照规定的字符顺序,使用常规的if-else语句进行判断也行,但是需要多次进行判断;使用正则表达式,能够简单的一步到位。

3. 实现代码

def is_email_valid(email):
    # 此处编写代码
    import re
    pattern = r'^[^@]+@([^@.]+\.)+[^@.]+$'
    return bool(re.fullmatch(pattern, email))

# 获取输入 
email = input()

# 调用函数 
print(is_email_valid(email))

正则表达式解释:

  1. 正则表达式分解

    • ^[^@]+:匹配 @ 前的本地部分,确保至少有一个非 @ 字符。

    • @:匹配 @ 字符。

    • ([^@.]+\.)+:匹配域名部分中的每个段,每个段由非 @ 和非 . 的字符组成,并以 . 分隔,确保至少有一个段。

    • [^@.]+$:匹配域名的最后一个段,确保不以 . 结尾。

  2. 验证过程

    re.fullmatch(pattern, email) 使用正则表达式检查整个邮箱字符串是否匹配,若匹配则返回 True,否则返回 False

-------------------------------------------------------------------------------------------

正则表达式搞起来有点难度,自己想挑战一下,搞了一个多小时还是有问题,用DeepSeek搞搞,1分钟就能搞定。。。

编程还有练习的必要吗?

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐