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