JavaScript Regex电子邮件验证RFC 5321 - 限制长度

时间:2018-05-03 08:18:01

标签: javascript regex

我有一个Regex电子邮件验证模式:

/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/i

我的任务是调整此模式以符合RFC 5321标准,即本地部分不超过64个字符,域部分不超过255个字符。目前,该模式验证了更长的电子邮件。

我的问题是如何将局部部分(@符号之前)的长度限制为最多64个字符,将域部分(@符号之后)限制为最多255个字符。

2 个答案:

答案 0 :(得分:0)

如果您只想限制表达式匹配的字符数,则大多数正则表达式通过使用大括号来支持边界。例如,

\ d {3} - \ d {3} - \ d {4}

将匹配(美国)电话号码:正好是三位数,然后是连字符,然后是正好三位数,然后是另一个连字符,然后恰好是四位数。

同样,您可以设置上限或下限:

\ d {5,10}

表示&#34;至少5个,但不超过10个数字&#34;。

请参阅答案here

答案 1 :(得分:0)

最后,经过几个小时的挣扎,我有一个电子邮件模式来验证是否:

  • 本地部分不超过64个字符;
  • 域名部分(在@符号之后和。点之前) - 不超过63个字符;
  • 域名部分(在.dit之后直到结束) - 不超过63个字符;

它不完全符合RFC的64/255,但我牺牲了这个规定,因为我们的后端以这种方式验证它。

^([-!#-'*+\/-9=?A-Z^-~]{0,64}+(\.[-!#-'*+\/-9=?A-Z^-~]+)*|"\s([]!#-[^-~ \t]|(\\[\t -~]))+")@[0-9A-Za-z]([0-9A-Za-z-]{0,61}[0-9A-Za-z])?(\.[0-9A-Za-z]([0-9A-Za-z-]{0,61}[0-9A-Za-z])?)$