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.!#$%&''*+/=?^_`{|}~-]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);
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.