【发布时间】:2014-07-10 21:59:42
【问题描述】:
我知道这已经被问过很多次了,但我没有找到真正满足电子邮件地址必须满足的所有条件才能被视为有效的任何内容。
考虑以下作为电子邮件地址的结构:
part1@part2.part3.part4
-
part1=用户名
-
part2=域
-
part3 and part4 =顶级域名
这些都是必须满足的条件:
- 电子邮件地址不得接受空格
- 电子邮件地址不得以点或字母或数字以外的字符结尾
- 只允许使用一个 @ 符号
- at 符号前后不能有特殊字符
- 域点前后不能有特殊字符(电子邮件地址的part2后面的点)
- 您不能在用户名中连续输入两个或多个点
- 在域中,@ 和点之间,@ 和点旁边的字符必须是字母或数字,中间唯一允许的特殊字符是连字符。
- 第 7 步同样适用于顶级域(第 3 部分和第 4 部分或电子邮件)
这是我目前使用的正则表达式:
^([\w\.\-]+)@([\w\-]+)((\.(\w){2,9})+)$
但不满足条件:4、5、6、7和8
我只是想弄清楚如何补充我的正则表达式并在此过程中学习。
编辑
电子邮件地址中唯一允许的特殊字符是:点、连字符、下划线和 at 符号
这是无效电子邮件列表
mkyong - 必须包含“@”符号
mkyong123@.com – 域不能以点“.”开头
mkyong()*@gmail.com - 电子邮件只允许使用字符、数字、下划线和破折号
mkyong@%*.com – 电子邮件的 tld 只允许字符和数字
mkyong..2002@gmail.com – 双点“。”不允许
mkyong.@gmail.com – 电子邮件的最后一个字符不能以点“.”结尾
mkyong@mkyong@gmail.com – 不允许使用双“@”
mkyong@gmail.com.1a -email 的 tld 有两个字符不能包含数字
有效:
mkyong@yahoo.com
mkyong-100@yahoo.com
mkyong.100@yahoo.com
mkyong111@mkyong.com
mkyong-100@mkyong.net
mkyong.100@mkyong.com.au
mkyong@1.com
mkyong@gmail.com.com
mkyong-100@yahoo-test.com
【问题讨论】:
-
/[a-z0-9!#$%&'*+/=?^_{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/g来自regexr.com/2rhq7 -
你使用什么语言?
-
javascript。我也想用 C# 在服务器中进行验证,但我认为 javascript 就绰绰有余了
-
您前段时间向我寻求帮助,能否请您提供一组有效和无效的电子邮件地址,以便我可以测试我的正则表达式。谢谢
-
@sshashank124 我在我的问题中添加了一些示例,请看一下
标签: javascript regex email