これらの答えの多くは近い 正しい方法に。これらが私の提出のポイントです。
- ドメインを使用したい-ルールシステムではありません。
- これらのメールアドレスを正規表現で検証したくない。 (2017年3月の更新:もう本当ではありません)
DBA.StackExchange.comでこれを正しく行う2つの方法を示します 。 MXレコードをチェックするためと、HTML5仕様を使用するための両方。これが短くて甘いです。
CREATE EXTENSION citext;
CREATE DOMAIN email AS citext
CHECK ( value ~ '^[a-zA-Z0-9.!#$%&''*+/=?^_`{|}~-]example@sqldat.com[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$' );
SELECT 'example@sqldat.com'::email;
SELECT CAST('example@sqldat.com' AS email);
詳細については、非常に 回答全体を読む
ことをお勧めします 。回答では、 DOMAINを作成する方法も示しています Email::Validを介して 、そしてなぜ私がその方法を使わなくなったのか説明してください。