str*_*rks 2 regex email postgresql
有人知道正则表达式只会匹配包含子域的电子邮件吗?
例如,
name@subdomain.domain.com
要么 name@subdomain.domain.edu.au
最好在postgresql中使用.
我试过这个:
^[-+.0-9A-Z_a-z]+@[-+.0-9A-Z_a-z]+\.[A-Za-z]{2,4}$
Run Code Online (Sandbox Code Playgroud)
但它也匹配name@test.org
.
不要,不是为了验证目的.它只会以痛苦结束.
验证电子邮件地址的唯一合理的正则表达式是查找"@"符号和至少一个句点的正则表达式.没有其他的; 随着IDN的出现,甚至字母数字也毫无意义.
至少你需要准确定义"subdomain"的含义.一切都是子域名.什么子域?什么被排除在外,包括什么?
你如何定义"子域"与"顶级"?您的意思是" 对公众注册开放的域名的子域名 "吗?"对公众注册开放的域的子域的子域"?在什么级别的授权中它成为您的目的的子域?
那些可以注册域名的"公共"非常有限的政府域名,以及子域子域的子域名是常态吗?你想要匹配什么?
您将如何应对新通用顶级域名以及该列表将随时间变化的事实?或者增加/删除ccTLD?如果ccTLD改变其政策,开始销售直接后代域名(例如"myname.au")而不是仅销售特定的子注册表(例如"myname.org.au")呢?您是否会动态更新正则表达式,如果是这样,您将如何处理曾经有效且不再有效的地址,反之亦然?
我遇到了愚蠢的电子邮件验证系统,甚至拒绝我的主电子邮件地址ringerc@ringerc.id.au(尽管它是一个完全有效的.id.au域名,但是当它已经遍布'网络时没有任何意义).
请不要创建另一个.如果您的意图不是验证,那很酷,但请不要尝试使用正则表达式验证电子邮件地址域.