【问题标题】:How to validate an email address with two periods in it (Python)如何验证包含两个句点的电子邮件地址(Python)
【发布时间】:2021-03-20 11:20:53
【问题描述】:

下面有一个代码sn-p,当你输入一个电子邮件地址时,例如email@gmail.com,它会说它是有效的。

但是,如果我输入一个电子邮件地址,例如 email@students.school.edu,它会说它是无效的。我用我自己的学校电子邮件地址尝试了这个,里面有两个句点,它说它是无效的。

有没有一种方法可以使用正则表达式验证带有一个句点的常规电子邮件地址和一个带有两个句点的电子邮件地址,如下所示?

import re
email = input ("Type in an email address: ")
if re.match("\A(?P<name>[\w\-_]+)@(?P<domain>[\w\-_]+).(?P<toplevel>[\w]+)\Z",email,re.IGNORECASE):
    print("Email is valid")
else:
    print("Email is invalid")

【问题讨论】:

    标签: python regex email-validation


    【解决方案1】:

    您可以尝试集成一些外部更复杂的解决方案,例如mailcheck.co 或类似服务。要点是您可以做的不仅仅是正式检查。您可以验证电子邮件是否可操作、用户真实姓名、个人资料照片等。

    【讨论】:

      【解决方案2】:

      您可以对电子邮件使用 python 正则表达式标准:

      r"(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)
      

      来源:https://emailregex.com/

      所以,在你原来的 sn-p 的上下文中,它会是:

      import re
      email = input ("Type in an email address: ")
      
      if re.match(r"(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)", email):
          print("Email is valid")
      else:
          print("Email is invalid")
      

      【讨论】:

      • 您是什么意思“电子邮件的python regex 标准”?这是什么来源?
      • ^^ 并不是挑战,只是对本声明的权威性真正感兴趣
      • 当然,我不认为这是一个“官方”来源哈哈,只是我在谷歌上发现的。我用链接更新了我的答案。
      • 请注意,这也将匹配 email@students.school...
      • 非常感谢!正是我想要的。 :)
      【解决方案3】:
      import re
      email = input ("Type in an email address: ")
      if email!= "":
          mailValidation = bool(re.search("^[a-zA-Z0-9.]+@[a-zA-Z]+.[comrgin]", email))
          if mailValidation == True:
              print("Validate mail.")
          else:
              print("Please check mail.")
      

      【讨论】:

        猜你喜欢
        • 2011-08-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-27
        • 2014-06-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多