Molte di queste risposte sono vicine nel modo giusto. Questi sono i punti per la mia presentazione.
- Vuoi utilizzare un dominio -- NON il sistema di regole.
- Non NON vuoi convalidare questi indirizzi email con una regex. (Aggiornamento marzo 2017:non più vero)
Mostro due metodi per farlo proprio su DBA.StackExchange.com . Sia per controllare il record MX, sia per utilizzare le specifiche HTML5. Ecco il corto e dolce.
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);
Per ulteriori informazioni molto suggerisco di leggere la risposta per intero
. Nella risposta, Mostro anche come crei un DOMAIN su Email::Valid e spiega perché non utilizzo più quel metodo.