Python 如何改进此电子邮件正则表达式?
我尝试使用正则表达式将Python中的电子邮件地址与以下模式匹配:Python 如何改进此电子邮件正则表达式?,python,regex,email-validation,Python,Regex,Email Validation,我尝试使用正则表达式将Python中的电子邮件地址与以下模式匹配: "\w{1,}@\w{1,}.\w{1,}" 然而,有时有些电子邮件地址看起来像firstname。lastname@lol.omg.hahaha.museum我的模式将错过哪些 是否有办法调整此正则表达式,使其包含任意数量的chained“.word”类型模式?您不应尝试将电子邮件地址与正则表达式匹配。您必须使用更复杂的状态机来检查地址是否与RFC2822正确匹配 是一个这样的库,你可以签出。这应该适合你 [a-zA-Z0-
"\w{1,}@\w{1,}.\w{1,}"
然而,有时有些电子邮件地址看起来像firstname。lastname@lol.omg.hahaha.museum
我的模式将错过哪些
是否有办法调整此正则表达式,使其包含任意数量的chained“.word”类型模式?您不应尝试将电子邮件地址与正则表达式匹配。您必须使用更复杂的状态机来检查地址是否与RFC2822正确匹配
是一个这样的库,你可以签出。这应该适合你
[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}
您可以使用以下选项:
[\w.-]+@[\w-][\w.-]+\w //replaced {1,} with its equivalent.. "+"
是-
“@”在字符串中
。这是您所能做的最好的了。@user51819-Vaultah实际上提出了一个有效的观点;很难为电子邮件提供有效的正则表达式(因为有效的电子邮件地址可以采用多种不同的格式)。许多应用程序使用一个简单的检查字符串中的at符号(以及at符号后面的东西),顺便说一句,而不是{1,}
,您应该使用+
gibberish@gibberish“是一个有效的电子邮件地址(信不信由你!),理论上你可以使用顶级域名发送电子邮件。.com
的所有者可以创建类似owner@com
。实际上,没有人这样做,可能有数百万地址验证器不允许这样做。根据他的评论,他没有做验证,他在刮。这将丢失我使用的地址。但我同意。有什么理由不像他原来的regexp那样使用\w
而不是a-zA-Z0-9
?你能用\w+代替[a-zA-Z0-9.-]+?@user51819\w
是字母、数字和下划线的缩写。它不包括点或破折号。这就是你原来的regexp不起作用的原因。我发现,\w
有时包含一些在电子邮件地址中无效的奇怪字符。我想这取决于你用的是什么语言。@Barmar是的,我用了。。但我没有看到用户要求它?这不会错误地拾取句子末尾的句点吗?例如,“我的电子邮件是myname@somewhere.com.“@user51819检查更新:)我只是想了解结构。“[\w.-]”本身是什么意思?a-zA-Z0-9_uu字符或句点或hiphen?@user51819表示匹配集合中的任何字符