【发布时间】:2011-01-20 18:57:22
【问题描述】:
好的,所以我知道使用 RegEx 完全验证电子邮件地址是不可能的,我会尝试通过电子邮件发送它并让用户单击验证链接。但是,这是 A-level 项目的一部分,我会因此获得额外的复杂度,所以我想知道您是否可以帮助我。我正在尝试编写一封电子邮件验证正则表达式,它遵循以下规则:
电子邮件地址必须由本地部分和域部分组成,由 @ 符号 (x40) 分隔,组合长度不超过 256 个字符。
本地部分:
未加引号的本地部分可能由 (a-z)、(A-Z)、数字 (0-9) 和以下字符组成: !#$%&'*+-/=? ^_{`|}~ 检查
点也可能出现在本地部分,但不能是第一个或最后一个字符,也不能与另一个点相邻 (.) ALMOST CHECK, DOT CAN STILL BE LAST
本地部分的最大长度为 64 个字符。可能会忽略 - 不检查
域部分:
域部分由点分隔标签组成,每个标签由 1 到 63 个字符组成,最大总长度为 255 个字符(包括点分隔符)。检查
域标签必须以字母 (a-z) (A-Z) 或数字 (0-9) 字符开头和结尾,并且可以包含连字符 (-)。此外,TLD(最后一个标签)必须包含至少一个字母字符或连字符(并非全部为数字),并且至少为两个字符。 - 检查
大写是我在实现目标方面走了多远。我遇到的主要问题是确保点不能是域本地部分的最后一个字符。到目前为止,这是我的正则表达式:
/^[A-z0-9!#$%&'*+\/=?^_{|}~-]([A-z0-9!#$%&'*+\/=?^_{|}~-]|(.(?!.))){0,62}[ A-z0-9!#$%&'*+\/=?^_`{|}~-]?@([A-z0-9-]{1,63}.){1,126}[A-z- ]{2,63}$/
编辑:灰色部分的开头和结尾应该有反引号。
【问题讨论】:
-
到底什么是“a-level项目”,什么是“复杂点”?这是某种学校项目吗?如果是这样,您不应该自己解决吗?
-
大学项目,是的,我应该这样做,但它让我很烦。
-
哦,A-Levels 相当于英国的 AP,假设你来自美国。
-
亲爱的上帝,你把它弄复杂了?难怪英国经济正在南下。
-
想必他会因为匹配更复杂的规范而获得更多积分。
标签: javascript regex email