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