regex 电子邮件的简单正则表达式模式

q9yhzks0  于 2022-11-18  发布在  其他
关注(0)|答案(3)|浏览(159)

我已经尝试了将近一个小时了,如果没有任何帮助或解释,我无法看到自己在这方面取得更大的进展。我以前用过regex,但只是非常简单的或已经做过的。
这一次,我将尝试编写一个正则表达式,以实现以下功能:
电子邮件地址必须包含一个@字符,并且在@字符后至少一个位置上至少包含一个点(.)。
到目前为止,这是我所能找到的全部,它仍然匹配电子邮件地址,例如,有一个以上的@符号。
.*?@?[^@]*\.+.*
如果你能告诉我如何构造一个正则表达式来检查单个@和@后面一个或多个空格中至少一个句号,那将很有帮助。如果你能分解正则表达式并解释每个位的作用,那将很有帮助。
现在我想让它保持简单,这样它就不必是一个完全超准确的电子邮件验证表达式。

1dkrff03

1dkrff031#

借助ClasG的注解,我现在有了一个相当简单且适合我的问题的正则表达式。为了任何学习正则表达式的人将来可能遇到这个问题,我将把表达式分解如下。
表达式:^[^@]+@[^@]+\.[^@]+$

  • ^匹配字符串的开头(如果是多行,则匹配行)
  • [^@]匹配不在此集合中的任何字符(即不是“@”)
  • +匹配以下一项或多项
  • @匹配“@”字符
  • [^@]匹配不在此集中的任何字符
  • +匹配一个或多个
  • \.匹配.””(句号)字符(反斜杠转义句号)
  • [^@]匹配不在此集中的任何字符
  • +匹配一个或多个
  • $匹配字符串的结尾(如果是多行,则匹配行)

用简单的语言来说:

  • 从字符串或行的开头开始
  • 包括除@符号之前的所有字符
  • 包含@符号
  • 在@符号之后包括除@以外的所有字符,直到句号
  • 在句号后包含除@以外的所有字符
  • 在字符串或行的末尾停止
nmpmafwu

nmpmafwu2#

电子邮件地址必须包含一个@字符
不,不带“@”字符的电子邮件地址是完全有效的。IP地址前带有多个“@”字符的电子邮件地址是完全有效的(只要除1个字符外的所有字符都在ADDR_SPEC之外,或者在邮箱名称中用引号/转义)。
我怀疑你不是在验证一个电子邮件地址,而是一个ADDR_SPEC。Máté Safranka链接的答案描述了如何验证一个ADDR_SPEC(不是一个电子邮件地址)。除非你想验证的记录没有一个有效的互联网MX记录,并且多个'@'更有可能是一个打字错误,而不是一个有效的地址。

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

waxmsbnn3#

^[^\W_]+\w*(?:[.-]\w*)*[^\W_]+@[^\W_]+(?:[.-]?\w*[^\W_]+)*(?:\.[^\W_]{2,})$

相关问题