繁体   English   中英

电子邮件验证无效

[英]Email validation doesn't work

我有这个简单的电子邮件正则表达式。

/^[a-z]+([\.-_]?[a-z0-9]+)*@([a-z]{3,})+(\.[a-z]{2,3})+$/i;

但是,当我使用以下示例: first @ last @ example.com时,它仍然有效,而且当我从表达式中删除@字符时:

`/^[a-z]+([\.-_]?[a-z0-9]+)*([a-z]{3,})+(\.[a-z]{2,3})+$/i

它给出相同的结果。

此表达式允许电子邮件中至少2个字符之间有无限数量的at符号(即@ )!

这个表达式在哪里出问题?

您的模式相当严格,您可能会想到其他验证电子邮件地址的选项,例如,如果是输入字段验证,则type="email"

至于为什么正则表达式匹配@即使你把它拿出来,或者用两个字符串匹配@符号,由套管[.-_]随着连字符创建一个包含范围相匹配的很多字符的@ 您需要改用[._-]

在此处输入图片说明

您可以将“正则表达式”“修复”为

/^[a-z]+([._-]?[a-z0-9]+)*[a-z]{3,}(\.[a-z]{2,3})+$/i

但是,此正则表达式不适用于现实生活中。

你想要那样的东西吗?

/^[a-z\.\-_]+@([a-z]{3,})+(\.[a-z]{2,3})+$/

可能带有\\.-_符号,您想在正则表达式中使用“。”,“-”或“ _”,但您忘了转义“-”。

或者,您可以使用自己的但可以使用转义符:

^[a-z]+([\.\-_]?[a-z0-9]+)*@([a-z]{3,})+(\.[a-z]{2,3})+$

PS:请记住,一个真实有效的电子邮件地址可能完全不同,并且具有巨大的正则表达式,此外,每个Web服务器都定义了电子邮件中允许和禁止的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM