给定场景的正则表达式

Regular Expression for given scenario

我已经有一个来自 RFC 2822 格式的电子邮件地址正则表达式

[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. 至少一个@字符
  3. 没有连续的句号
  4. 不得 start/end 包含特殊字符,即只应 start/end 包含 [0-9a-zA-Z]
  5. 仍应遵循正则表达式规则的 RFC 规范。

目前上面的允许电子邮件以特殊字符开头。它还允许两个连续的句号(域名除外,这很好,所以 test@test..com 失败但正确)。

谢谢。

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

没有 .. 和至少 1 . 和 1 @.
还有 starts/ends 和 letters/numbers.

^(开始)和$(结束)只是为了匹配整个字符串,而不仅仅是一个子字符串。但是您可以用单词边界 \b.

替换它们

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

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