PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Fonction Postgres pour valider l'adresse e-mail

Un tas de ces réponses sont proches dans le bon sens. Ce sont les points pour ma soumission.

  • Vous souhaitez utiliser un domaine -- PAS le système de règles.
  • Vous ne souhaitez PAS valider ces adresses e-mail avec une regex. (Mise à jour mars 2017 :plus vraiment vrai)

Je montre deux méthodes pour le faire correctement sur DBA.StackExchange.com . À la fois pour vérifier l'enregistrement MX et également en utilisant la spécification HTML5. Voici le court et doux.

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);

Pour plus d'informations, je fortement vous suggérons de lire la réponse en entier . Dans la réponse, je montre également comment vous créez un DOMAIN sur Email::Valid , et explique pourquoi je n'utilise plus cette méthode.