Ett gäng av dessa svar är nära till rätt väg. Det här är poängen för min inlämning.
- Du vill använda en domän -- INTE regelsystemet.
- Du vill INTE validera dessa e-postadresser med ett regex. (Uppdatering mars 2017:inte riktigt sant längre)
Jag visar två metoder för hur man gör detta på DBA.StackExchange.com . Både för att leta efter MX-posten och även använda HTML5-specifikationen. Här är kort och gott.
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);
För mer information jag högt föreslår att du läser svaret i sin helhet
. I svaret visar jag också hur du skapar en DOMAIN
över Email::Valid
, och förklara varför jag inte längre använder den metoden.