给定方案

时间:2016-09-07 23:33:37

标签: c# regex email-validation

我已经有一个电子邮件地址正则表达式FROM RFC 2822 FORMAT

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?

但想要修改它以包含以下一些新条件:

  1. 至少一个句号
  2. 至少一个@ character
  3. 没有连续完全停止
  4. 不得以特殊字符开头/结尾,即只能以[0-9a-zA-Z]开头/结尾
  5. 仍应遵循正则表达式规则的RFC规范。
  6. 目前,上述内容允许电子邮件以特殊字符开头。它还允许连续两次完整停止(域名除外,这是正常的,因此test @ test..com失败并且正确)。

    感谢。

1 个答案:

答案 0 :(得分:1)

^[a-zA-Z0-9]+(?:\.?[\w!#$%&'*+/=?^`{|}~\-]+)*@[a-zA-Z0-9](?:\.?[\w\-]+)+\.[A-Za-z0-9]+$

..且至少1 .和1 @ 也以字母/数字开头/结尾。

添加^(开始)和$(结束)以匹配整个字符串,而不仅仅是子字符串。但是你可以用单词边界\b替换它们。

特殊字符未被硬编码的替代方法:

^(?!.*[.]{2})[a-zA-Z0-9][^@\s]*?@[a-zA-Z0-9][^@\s]*?\.[A-Za-z0-9]+$