我想要一个非常松散的正则表达式来验证电子邮件
一些例子:anyCharacter@anycharacter.anycharacter
空格将被视为无效(包括末尾和开头的),超过一个 @
, 或 @
后面的一个点:
我正在尝试修改这个
^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
但我有一些麻烦,您的帮助将不胜感激。
最佳答案
在验证电子邮件地址时,您应该非常小心。我并不是说您不应该这样做,但是您需要注意,要编写 100% 准确的电子邮件地址验证将是极其困难的,并且由于拥有一个不太完美的电子邮件地址验证,您可能仍然允许无效地址和(更糟糕的)阻止合法用户。
有很多技术上有效的晦涩案例(即使它们很少使用,迟早可能会破坏世界某个地方写得很糟糕的电子邮件服务器)。您需要决定是否要允许来自少数用户的地址。
您可能有一个用户(愚蠢到无法获取)包含带引号的 @ 符号的电子邮件地址。
例如"the-address-has-two-@-symbols"@example.com
事实上,您几乎可以在地址的非域部分使用您能想到的任何字符(只要它们被引用),甚至可以出现空格:"Forename Surname"@example.com
在您的示例中:£££τεστtest@gma!"¬ilγμαιλ.ψψομcomd**%%$
实际上是无效的,因为 domain names may only contain letters (a-z), numbers, dots and hyphens .
因此,假设您正在进行不区分大小写的匹配并且您确实想要检查有效的域名,您应该能够将表达式(取自您的评论)简化为
^\D+([-+.']\D+)*\S[^\@]+@[a-z0-9]+[a-z0-9\-\.]*$
您还可以进一步进行域验证,但要正确进行验证需要阅读 RFC 2396 .
关于validation - 非常松散的电子邮件正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9110811/