Banyak jawaban ini dekat ke jalan yang benar. Ini adalah poin untuk pengajuan saya.
- Anda ingin menggunakan domain -- BUKAN sistem aturan.
- Anda TIDAK ingin memvalidasi alamat email ini dengan ekspresi reguler. (Pembaruan Mar 2017:tidak lagi benar)
Saya menunjukkan dua metode cara melakukannya dengan benar di DBA.StackExchange.com . Baik untuk memeriksa MX-record, dan juga menggunakan spesifikasi HTML5. Ini dia singkat dan manisnya.
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);
Untuk informasi lebih lanjut saya sangat menyarankan Anda membaca jawabannya secara lengkap
. Dalam jawabannya, Saya juga menunjukkan cara membuat DOMAIN
melalui Email::Valid
, dan jelaskan mengapa saya tidak lagi menggunakan metode itu.