gpt4 book ai didi

java - 正则表达式电子邮件验证问题

转载 作者:行者123 更新时间:2023-12-02 06:47:25 27 4
gpt4 key购买 nike

在回答我的问题之前,请允许我先介绍一下:在电子邮件地址验证方面,我有一套严格的要求。我试图对其中一些提出异议,但被否决了。

无论如何,要求如下:

  • 没有连续的周期
  • 位置 1 中没有特殊字符
  • @ 之前或之后没有句号
  • 允许使用以下字符:+!#$%&*/=?`{|}~'_-。

我满足要求的尝试很成​​功,但有一个障碍。由于我在本地部分使用的正则表达式,现在需要的最少 3 个字符不正确。这是我的尝试:

(^(?!.*\\.{2})([a-zA-Z0-9{1}]+[a-zA-Z0-9\\._\\-\\+!#$%&*/=?`{|}~']+[a-zA-Z0-9{1}])+@([a-zA-Z0-9{1}]+[a-zA-Z0-9\\-]+[a-zA-Z0-9{1}]+\\.)+([a-zA-Z0-9\\-]{2}|net|com|gov|mil|org|edu|int|NET|COM|GOV|MIL|ORG|EDU|INT)$)|^$

我明白为什么会发生这种情况,我只是不知道如何解决它。任何帮助将不胜感激。

已编辑:经过多次讨论,事实证明我的问题并不特定于电子邮件地址的本地部分。域部分也遇到了同样的问题。

谢谢,塞布

最佳答案

对于本地部分( @ 之前的部分),这是满足上述所有条件的正则表达式片段:

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

分割:

^                                 # Beginning of the string
[a-zA-Z0-9] # First character is not special
[a-zA-Z0-9+!#$%&*/=?`{|}~'_-]* # 0 or more alphanumeric and special characters, except .
(?: # Group, repeated 0 or more times
\. # A literal .
[a-zA-Z0-9+!#$%&*/=?`{|}~'_-]+ # 1 or more alphanumeric and special characters, except .
)*

“没有连续的句点”“@之前或之后没有句点”条件是由 . 的事实强制执行的。只能出现在 2 个非点字符之间,如上面的正则表达式所示。

我对电子邮件规范并不完全了解,因此即使它满足问题中的条件,我也不能保证该电子邮件是符合规范的有效电子邮件

<小时/>

域部分与 {1} 存在相同的问题在字符类中。

我冒昧地使用 hostname 上的限制,其中标签不得以 - 开头或结尾.

[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)*(?:\.[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)*)*

如果您想强制执行 TLD:

[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)*(?:\.[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)*)*\.(?i:[a-z0-9]{2}|net|com|gov|mil|org|edu|int)

请注意,我使用 i 的非捕获组使 TLD 不区分大小写。标志。

关于java - 正则表达式电子邮件验证问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18469347/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com