-3

我有一个 HTML 表单,我要求用户输入他/她的电子邮件地址。如果电子邮件是以下形式,我只能继续/提交表格:first.last@example.com

“第一个”和“最后一个”可以是任何东西,但必须有“。” 在中间,它必须以“@example.com”结尾。谁能告诉我我可以使用的正则表达式吗?

4

4 回答 4

2

像这样的东西应该工作。

r'^([^@.]+)\.([^@.]+)@example\.com$'
  • ^匹配字符串的开头。
  • $匹配结尾。
  • 通过编写^...$,您可以确保字符串看起来与您的正则表达式完全一样。之类的东西foo.bar@example.comasdfg不匹配。
  • [^@.]+@匹配不是或的连续字符序列.

非正则表达式解决方案将是这样的:

def validate_email(email):
    if not email.endswith('@example.com'):
        return False

    chunks = email.split('.')

    return len(chunks) == 3 and all(chunks)
于 2013-01-31T20:40:35.573 回答
0

我会建议^(.+?)\.(.+?)@example\.com$。该部分意味着在第一部分.+?之前和之后必须有一些东西。.

于 2013-01-31T20:43:54.627 回答
0

我建议r'^(\w*?)\.(\w*?)@example\.com$'。这与 Blender 的答案相同,只是它将“first”和“last”的内容限制为“word”字符,包括大小写字母、数字和下划线 ( _)。如果您想允许更多字符,例如-,您可以通过替换@以下替代版本中的 来实现:

r'^([\w@]*?)\.([\w@]*?)@example\.com$'

例如,如果您想允许-and &,它将是:

r'^([\w&\-]*?)\.([\w&\-]*?)@example\.com$'

(前面的反斜杠-是因为-在字符类中具有特殊含义。)

于 2013-01-31T20:47:26.507 回答
0

您不需要正则表达式,您可以使用:

def email_validator(email):
    if not email.endswith('@example.com'):
        return False

    if not email[:-12].count('.') == 1:
        return False
    return True

编辑:修复了来自@John Y、@manu-fatto 的建议

于 2013-01-31T20:41:03.093 回答