[英]Regex: Email validation that allows only hyphens in the middle of the domain and top-level domain
我知道以前曾被问过很多次,但是我还没有找到真正满足电子邮件地址必须符合的所有条件才能被视为有效的条件。
将以下内容视为电子邮件地址的结构:
part1@part2.part3.part4
part1 =用户名
part2 =域
part3和part4 =顶级域
这些是必须满足的所有条件:
这是我当前使用的正则表达式:
^([\w\.\-]+)@([\w\-]+)((\.(\w){2,9})+)$
但是它不满足条件:4、5、6、7和8
我只是想弄清楚如何补充我的正则表达式并在此过程中学习。
这是无效电子邮件的列表
mkyong –必须包含“ @”符号
mkyong123 @ .com –域不能以点“。”开头
mkyong()* @ gmail.com –电子邮件仅允许使用字符,数字,下划线和破折号
mkyong@%*.com –电子邮件的tld仅允许使用字符和数字
mkyong..2002 @ gmail.com –不允许使用双点“。”
mkyong。@ gmail.com –电子邮件的最后一个字符不能以点“。”结尾
mkyong @ mkyong @ gmail.com –不允许使用双“ @”
mkyong@gmail.com.1a-具有两个字符的电子邮件的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
根据您的有效和无效电子邮件地址列表,这是我能做的最好的事情:
^([\w-]|(?<!\.)\.)+[a-zA-Z0-9]@[a-zA-Z0-9]([\w\-]+)((\.([a-zA-Z]){2,9})+)$
更新:
^([\w-]|(?<!\.)\.)+[a-zA-Z0-9]@[a-zA-Z0-9]([a-zA-Z0-9\-]+)((\.([a-zA-Z]){2,9}){0,2})$
电子邮件地址不得包含空格
不, "this is"@a-valid-e-mail-address.com
。
只能使用一个@符号
不,“ "this@is"@a-valid-e-mail-address.com
。
at符号之前或之后不能有特殊字符
我不确定这意味着什么,但这可能不是事实。 !#$%&'*+-/=?^_`{}|~@example.org
很好。
域点(电子邮件地址的part2之后的点)之前或之后不能有特殊字符
does@ţḩıš.çóûñţ
吗? 因为它是一个有效的电子邮件地址。
您不能在用户名中连续输入两个或多个点
can(...)too@localhost
电子邮件地址确实具有可以表示为正则表达式的特定格式。 RFC 5322的正式格式为:
(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f] | \\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@ (?:(?:a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])? | \[(?:(?:25[0-5]|2[0-]0-9]|[01]?[0-9][0-9]?)\.){3} (?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-]: ?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
正如Jan Goyvaerts所指出的, 正则表达式不会发送电子邮件 ,因此您实际上无法知道它是无效的,直到发送电子邮件且收件人未收到它为止。
由于您以自己的方式调整电子邮件正则表达式,因此并不合适。 使用该格式可能会满足您的要求,但是电子邮件是固定格式,因此仅使用参考号或简化的格式,例如在“ 正则表达式”页面上列出的格式。 否则,这个问题将永远无法回答您的确切要求。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.