域扩展错误检查;如何限制'。'之后的字符数限制在电子邮件地址内?

时间:2018-11-08 02:53:23

标签: python python-3.x spyder

#Takes user's email and stores it in a variable
userEmail = input("Please enter email: ").lower()
while '@' not in userEmail or '.com\' not in userEmail or userEmail == '':       #Checks if email has a valid format
     if (userEmail == ''):
         userEmail = input("Field is empty. Please enter an email address: ").lower().strip()
     else:
         userEmail = input("\nIncorrect format. Please re-enter email address: ").lower().strip()

因此,上面的代码应该从用户处获取电子邮件地址,并且在输入时会错误检查用户是否输入了.com@

但是,当我运行代码时;如果用户放置的是name@**@**gmail.comname@gmail.com**m**,则采用正确的格式。

有什么方法可以限制用户在字符串中某个字符之后可以输入的字符数?

1 个答案:

答案 0 :(得分:1)

  

有什么方法可以限制用户在字符串中的某个字符之后可以输入的字符数?

要将.之后的字符数限制为例如2到4之间,可以使用rpartition

while True:
    email = input("Enter a valid email address: ").strip()

    if "@" in email:
        if 2 <= len(email.rpartition(".")[-1]) <= 4:
            # TLD length is acceptable; stop prompting
            break

print("You entered {e}.".format(e=email))
  

...检查用户在输入时是否输入了'。com'和'@'。

如果这些是您的实际标准:

email = None

while ("@" not in email) or not email.endswith(".com"):
    email = input("Enter a valid email address: ").strip()

print("You entered {e}.".format(e=email))

尽管如此,这仍然与格式验证电子邮件地址相去甚远。虽然这不是您要问的,但如果您有兴趣,可以在this question的答案中讨论各种方法。