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