Kilka z tych odpowiedzi jest blisko we właściwy sposób. To są punkty za moje zgłoszenie.
- Chcesz użyć domeny — NIE systemu reguł.
- NIE chcesz weryfikować tych adresów e-mail za pomocą wyrażenia regularnego. (Aktualizacja z marca 2017 r.:już nieprawda)
Pokazuję dwie metody, jak to zrobić we właściwy sposób na DBA.StackExchange.com . Zarówno w celu sprawdzenia rekordu MX, jak i przy użyciu specyfikacji HTML5. Oto krótki i słodki.
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);
Aby uzyskać więcej informacji wysoce sugerujemy przeczytanie pełnej odpowiedzi
. W odpowiedzi pokazuję również, jak tworzysz DOMAIN ponad Email::Valid i wyjaśnij, dlaczego nie używam już tej metody.