Một loạt các câu trả lời này là gần đúng cách. Đây là những điểm cho bài nộp của tôi.
- Bạn muốn sử dụng miền - KHÔNG PHẢI là hệ thống quy tắc.
- Bạn KHÔNG muốn xác thực các địa chỉ email này bằng regex. (Cập nhật tháng 3 năm 2017:không còn đúng nữa)
Tôi hiển thị hai phương pháp về cách thực hiện điều này ngay trên DBA.StackExchange.com . Cả hai để kiểm tra bản ghi MX và cũng sử dụng thông số kỹ thuật HTML5. Đây là đoạn ngắn và ngọt ngào.
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);
Để biết thêm thông tin, tôi rất đề nghị bạn đọc đầy đủ câu trả lời
. Trong câu trả lời, Tôi cũng chỉ cách bạn tạo DOMAIN
qua Email::Valid
và giải thích lý do tại sao tôi không sử dụng phương pháp đó nữa.