电子邮件子域匹配的正则表达式

str*_*rks 2 regex email postgresql

有人知道正则表达式只会匹配包含子域的电子邮件吗?

例如,

name@subdomain.domain.com 要么 name@subdomain.domain.edu.au

最好在使用.

我试过这个:

^[-+.0-9A-Z_a-z]+@[-+.0-9A-Z_a-z]+\.[A-Za-z]{2,4}$
Run Code Online (Sandbox Code Playgroud)

但它也匹配name@test.org.

Cra*_*ger 7

不要,不是为了验证目的.它只会以痛苦结束.

验证电子邮件地址的唯一合理的正则表达式是查找"@"符号和至少一个句点的正则表达式.没有其他的; 随着IDN的出现,甚至字母数字也毫无意义.

至少你需要准确定义"subdomain"的含义.一切都是子域名.什么子域?什么被排除在外,包括什么?

你如何定义"子域"与"顶级"?您的意思是" 对公众注册开放的域名的子域名 "吗?"对公众注册开放的域的子域的子域"?在什么级别的授权中它成为您的目的的子域?

那些可以注册域名的"公共"非常有限的政府域名,以及子域子域的子域名是常态吗?你想要匹配什么?

您将如何应对新通用顶级域名以及该列表将随时间变化的事实?或者增加/删除ccTLD?如果ccTLD改变其政策,开始销售直接后代域名(例如"myname.au")而不是仅销售特定的子注册表(例如"myname.org.au")呢?您是否会动态更新正则表达式,如果是这样,您将如何处理曾经有效且不再有效的地址,反之亦然?

我遇到了愚蠢的电子邮件验证系统,甚至拒绝我的主电子邮件地址ringerc@ringerc.id.au(尽管它是一个完全有效的.id.au域名,但是当它已经遍布'网络时没有任何意义).

请不要创建另一个.如果您的意图不是验证,那很酷,但不要尝试使用正则表达式验证电子邮件地址域.