En masse af disse svar er tætte til den rigtige vej. Dette er pointerne for mit indlæg.
- Du vil bruge et domæne -- IKKE regelsystemet.
- Du ønsker IKKE at validere disse e-mailadresser med et regex. (Opdatering Mar 2017:ikke rigtig længere)
Jeg viser to metoder til, hvordan man gør dette rigtigt på DBA.StackExchange.com . Både for at tjekke for MX-recorden, og også ved at bruge HTML5-specifikationen. Her er det korte og søde.
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);
For mere information jeg high foreslår, at du læser hele svaret
. I svaret viser jeg også, hvordan du opretter et DOMAIN over Email::Valid , og forklar hvorfor jeg ikke længere bruger den metode.