Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何改进此电子邮件正则表达式?_Python_Regex_Email Validation - Fatal编程技术网

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-

我尝试使用正则表达式将Python中的电子邮件地址与以下模式匹配:

"\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表示匹配集合中的任何字符