非常简单的电子邮件验证,需要确保在 LAST 句点之后有 2 个或更多字符

Very simple email validation, need to make sure that there are 2 or more characters after the LAST period

我使用的程序内置了自己的电子邮件验证,它只接受 LAST 句点后的最后一组字符为 2 个或更多字符的电子邮件。到目前为止我有这个正则表达式语句:

/^[^@]+@[^@]+\.[^@]+$/i

这对于我正在尝试做的事情来说是可以接受的,而不是试图在这里变得超级花哨。只想检查:

我只是不确定如何测试最后一个。而不是任何。 @ 符号后。

有什么帮助吗?

试试这个:

^[^@]+@[^@]+\.([^@.]{2,})$

你可以在这里测试:https://regex101.com/r/eK6fT4/1

基本部分是 [^@.]:检查字符串的结尾,不包括 @. 超过 2 个字符。

您可以在开始时以积极的前瞻性强加此检查:

/^(?=.*\.[^.]{2,}$)[^@]+@[^@]+\.[^@]+$/i
  ^^^^^^^^^^^^^^^^

demo

(?=.*\.[^.]{2,}$) 前瞻将找到最后一个 .,然后将尝试匹配 2 个或更多字符,而不是字符串末尾前的一个点。如果更少(只有 1 个),匹配将失败(将没有匹配)。

更新

由于您可能无法在字符串的 start/end 之外的其他地方使用具有 ^/$ 锚点的正则表达式,这是另一个解决方案:

^[^@]+@[^@]+\.[^@.]{2,}$

demo

正则表达式细分:

  • ^ - 字符串开头
  • [^@]+ - @
  • 以外的 1 个或多个字符
  • @ - 文字 @ 符号
  • [^@]+ - 除了 @ 之外的 1 个或多个字符尽可能多(因此,没有 ee@.dd 是可能的)
  • \. - 文字点
  • [^@.]{2,} - 除了 @. 之外的 2 个或更多字符,最多...
  • $ - 字符串结尾