如何在 PostgreSQL 中验证有效的电子邮件地址?

avi*_*avi 2 sql postgresql

我有一个包含电子邮件字段和 30K 记录的表。我发现许多用户输入了无效的电子邮件地址,其中包含以下字符: <,@@等...

PostgreSQL 有没有办法运行一个查询来显示所有无效的电子邮件地址?我知道如何用正则表达式做到这一点

[a-z,A-z,0-9,'.']*@[a-z,A-z,0-9]*.com 
Run Code Online (Sandbox Code Playgroud)

[a-z,A-z,0-9,'.']*@[a-z,A-z,0-9]*.xx|xxx.xx 对于类似.co.uk或这样的地址.org.it

如何在查询中完成此操作?我只想获取所有无效地址的列表,以便我可以要求修复他们的记录。

Geo*_*hev 5

您可以使用PostgreSQL 的POSIX 正则表达式功能:

email在 where 子句中使用以下条件(是您的电子邮件列)进行查询:

where email !~* '^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+[.][A-Za-z]+$'

或者任何适合你的正则表达式。