Regex for email validation in Redux form
我正在尝试构建一个用于电子邮件验证的regex,我还需要检查以下几个条件:
允许:大写和小写英文字母,数字0到9
允许:""、""、"."、"@"和"'";
3.a.如果不是第一个或最后一个字符,则允许提供"."
3.b.""不连续出现两次或两次以上。
3.c.""必须在域名中至少出现一次。
不应包含".@"或"@"。
不应以""开头。
"@"必须出现一次
在域名中,最后一个"."之后的字符串长度应至少包含2个字符。
域名中不允许有前导"u"
我创建了以下regex:
1 | ^[a-zA-Z0-9_'-]{1}[a-zA-Z0-9._'-]*([^.]@[^._])([a-zA-Z0-9_.'-])+[.]{1}[a-zA-Z0-9_'-]{2,}$ |
我涵盖了除第3.b节外的所有章节。
有效电子邮件示例:[email protected]无效电子邮件的示例:[email protected],y.s.sss.。。。。。。。@kk.dd
谢谢
在模式开始时,对
1 | (?!.*\.{2}) |
还需要进行一些修复和优化。通过在字符串开始处对(单个)
负字符集本身可以匹配不在集合中的任何字符-例如,您的
1 | ^(?!.*\.{2})(?!\.)[a-z0-9_.'-]*[a-z0-9_'-]@ |
号
(在现代环境中,您可以在
同时使用不区分大小写的标志,以避免在任何地方使用
1 | ^(?!.*\.{2})(?!\.)[a-z0-9_.'-]*[a-z0-9_'-]@(?!_)(?:[a-z0-9_'-]+\.)+[a-z0-9_'-]{2,}$ |
网址:https://regex101.com/r/tz7lht/2