Email验证regex在主机名中强制包含句号



我需要使用以下条件验证电子邮件

  1. 如果输入的电子邮件名称(@符号之前的部分)以句点(.)开头,系统将显示消息错误。例如:.mail@mail.com。
  2. 如果邮件名与ASCII-US表中的字符不一致,系统将显示错误信息。
  3. 如果邮件名以句点结尾,系统将显示错误信息。例如:.@mail.com邮件。
  4. 如果邮件名大于64个字符,系统会返回错误提示。
  5. 如果超过254字符的完整的电子邮件地址,系统应该显示一条错误消息。
  6. 如果主机名(@符号后的部分)不是以字母或数字(a-z和0-9字符)开头,系统将显示错误消息。
  7. 如果主机名应该总是有一个句点,但不应该以一个结尾。
  8. 如果主机名大于63个字符,系统会返回错误提示。

我正在使用以下正则表达式,它满足所有这些,除了(7),其中应该有一个'句号'强制出现在主机名中,它在电子邮件中失败,如"abc@efg">

/^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/

我需要保持相同的正则表达式,因为它满足所有其他条件,除了我提到的那个,我能做什么改变来满足那个条件

经过几次尝试和错误后,我制定了以下regexp,它可以满足上述所有要求的标准。在这里添加答案,以便将来有人偶然发现这个问题。

/^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/

相关内容

  • 没有找到相关文章

最新更新