我有一个要解决的任务:
在python上编写一个函数,它检查符合这些的电子邮件 规则:
电子邮件包含名称和域名部分以及" @"标记在它们之间;
域部分在3到256个符号之间,是一组非空字符串,由a-z 0-9_-符号组成,用点分隔;
- 域部分的每个组件都不能以" - "开头或结尾;符号;
- 名称部分(在@之前)不超过128个符号,由a-z0-9" ._-组成;
- 在名称部分,我们不能写两个点在一起" ..&#34 ;;
- 如果我们在名称部分(")中有双引号,它们应该有一对(" blabla");
- 我们也可以写"!,:"名称部分中的符号,但仅在双引号之间。
醇>
我写了一个小的正则表达式,一步一步到第4点:
((?!-)[A-Z0-9"\.\-_]{1,128}(?<!-)@(?!-)[A-Z0-9\-_.]{3,256}(?<!-))
但我坚持第5和第6。
如何在我的正则表达式中实现这些条件?我试着添加
|(?:\.(?!\.))
最后,但它不起作用。
答案 0 :(得分:1)
不要试图在regexp中执行此操作,this是使用Perl在正则表达式中编写的电子邮件验证程序的示例,直到今天怪物仍然困扰着我的梦想。
使用正确的解析器,您应该尝试查看validate_email库的来源并进行更改以满足您的目的。 This也可能是一个很好的资源来源。