Muchas de estas respuestas están cerca al camino correcto. Estos son los puntos de mi envío.
- Quieres usar un dominio, NO el sistema de reglas.
- Usted NO desea validar estas direcciones de correo electrónico con una expresión regular. (Actualización de marzo de 2017:ya no es cierto)
Muestro dos métodos de cómo hacer esto correctamente en DBA.StackExchange.com . Tanto para verificar el registro MX como para usar la especificación HTML5. Aquí está el corto y dulce.
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);
Para obtener más información, altamente sugiero que lea la respuesta completa
. En la respuesta, también muestro cómo crear un DOMAIN
sobre Email::Valid
y explique por qué ya no uso ese método.