下划线字符匹配所有电子邮件地址regex python

时间:2017-09-04 08:00:38

标签: python regex

我的电子邮件地址格式如 username@domain.extension

  • 用户名以英文字母字符开头,后续任何字符都包含以下一项或多项:字母数字字符, - ,. ,和_。
  • 域名和扩展名仅包含英文字母字符。 扩展名为1,2或3个字符。

我使用以下正则表达式来验证我的电子邮件地址:

[a-zA-Z]+\s<\b[a-z0-9._-]+@[a-zA-Z]+\.[A-Za-z]{1,3}\b>

电子邮件地址:

this <is@valid.com>
this <is_it@valid.com>
this <_is@notvalid.com>
this <.is@notvalid.com>
this <-is@notvalid.com>

它匹配电子邮件地址1,2,3而4,5有。并且 - 在域的开头,所以它被拒绝了。那么,为什么第3封电子邮件会在域名的开头强调它导致问题并被接受。我不能。根据上述说明,在域的开头, - ,_ 。这是link

纠正ans: 1,2电子邮件应该只匹配

2 个答案:

答案 0 :(得分:0)

<\b之后您的角色类正在接受_,因此任何以-开头的电子邮件地址也会变为有效。

您可以使用此正则表达式仅允许使用字母作为电子邮件的起始字母:

[a-zA-Z]+\s<\b[A-Za-z][a-zA-Z0-9._-]*@[a-zA-Z]+\.[A-Za-z]{1,3}\b>

Updated RegEx Demo

或者您可以使用\w

[a-zA-Z]+\s<\b[a-zA-Z][\w.-]*@[a-zA-Z]+\.[A-Za-z]{1,3}\b>

答案 1 :(得分:0)

新手到正则表达式:

([a-zA-Z]+[ ][<][a-zA-Z]+[a-zA-Z._-]+[@][a-zA-Z]+\.[A-Za-z]{1,3})[>]

我尝试解决您的问题:    enter image description here