Xác thực địa chỉ email với biểu thức chính quy (Regular Expression)

Regular Expression là gì?

Regular Expression hay còn gọi là biểu thức chính quy được dùng để xử lý chuỗi nâng cao thông qua biểu thức riêng của nó, những biểu thức này sẽ có những nguyên tắc riêng và bạn phải tuân theo nguyên tắc đó thì biểu thức của bạn mới hoạt động được. Ngoài cái tên gọi Regular Expression ra thì nó còn có thể viết tắt thành RegEx.

Nguyên tắc hoạt động của biểu thức RegEx là so khớp dựa vào khuôn mẫu, khuôn mẫu được xây dựng từ các quy tắc căn bản của biểu thức RegEx. Và để các bạn nắm rõ regular expression là gì thì tôi sẽ giới thiệu một hàm xử lý Regular Expression trong php đó là hàm preg_match, sau đó đưa ra một vài ví dụ nhỏ để các bạn thực hành trước khi tìm hiểu các phần nâng cao hơn.

Xác thực địa chỉ email với Regular Expression

Xác thực email là điều bắt buộc đối với các ứng dụng cho phép người dùng đăng ký tài khoản qua email.

Nếu sử dụng các kỹ thuật thao tác chuỗi thông thường thì việc xác thực email sẽ rất khó khăn vì chúng ta thường cần đếm số lượng ký tự trong chuỗi, kiểm tra đầy đủ 3 thành phần chính của email.

Nếu bạn đang tìm kiếm một cách tiếp cận phức tạp và đầy đủ nhất thì bài viết này không dành cho bạn. Tôi khuyên bạn nên xem qua được cung cấp tại emailregex.com. Nếu bạn muốn một cách tiếp cận đơn giản để sử dụng với các biểu mẫu web thì dưới đây là giải pháp.

Ta có chuổi biểu thức chính quy sau đây sẽ giúp bạn xác thực email ở hầu hết các trường hợp.

[^@]{2,64}@[^.]{2,253}\.[0-9a-z-.]{2,63}

Địa chỉ Email có đặc điểm sau:

  • Giữa 2 và 64 ký tự không được có @
  • Giữa 2 và 253 ký tự được có dấu .
  • Từ 2 đến 63 cho phép là chữ cái thường, số, dấu gạch ngang hoặc ký tự dấu chấm

Bạn có thể xem demo và test Regular Expression hoạt động tại này

XÁC THỰC ĐỊA CHỈ EMAIL VỚI BIỂU THỨC CHÍNH QUY (REGULAR EXPRESSION)

Hãy kiểm tra xem liệu biểu thức trên có phù hợp với bạn hay không?!

Ngoài ra có 1 rules mình thấy nó xác thực chính xác hơn bạn có thể xem đoạn code sau:

/(([^<>()\[\]\\.,;:\s+@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))/mg

Bạn có thể test với regex101

Chúc bạn thành công.

Nếu bạn thấy bài viết có ích hãy sao chép link và chia sẻ bài viết
Đã copy
daotiendung

Tiến Dũng Đào chuyên quản lý, vận hành các dịch vụ website. Anh có nhiều năm kinh nghiệm về VPS, Hosting, technical SEO, CMS. Đặc biệt yêu thích WordPress với hơn 5 năm phát triển theme và plugin. Sở thích của anh là đọc, viết blog, đi du lịch, tập võ và chia sẻ các kiến thức cho mọi người.

Bài viết liên quan