Nền tảng CRM và Dữ liệuTiếp thị qua email & Tự động hóa

Cách xác thực địa chỉ email bằng biểu thức chính quy (Regex). Mã HTML5, PHP, C#, Python và Java mẫu.

Hầu như mọi ngôn ngữ lập trình đều hỗ trợ các biểu thức chính quy ngày nay. Mặc dù một số nhà phát triển không thích chúng, nhưng chúng thực sự là một phương pháp hay nhất vì chúng thường thực hiện các chức năng như xác thực cực kỳ nhanh với ít tài nguyên máy chủ hơn. Địa chỉ email là một ví dụ hoàn hảo… nơi chúng có thể dễ dàng được kiểm tra để đảm bảo chúng được định dạng đúng.

Hãy nhớ rằng xác thực không xác minh. Xác thực đơn giản có nghĩa là dữ liệu được truyền đi tuân theo một định dạng tiêu chuẩn được xây dựng đúng cách. Một số điều thú vị về địa chỉ email có thể bị bỏ qua khi xác thực.

Địa chỉ Email là gì?

Một địa chỉ email, như được xác định bởi Định dạng Thư Internet (RFC 5322), được tạo thành từ hai phần chính: phần cục bộ và phần miền. Phần cục bộ xuất hiện trước phần @ biểu tượng và phần tên miền đến sau. Đây là một ví dụ về địa chỉ email: example@example.com, Nơi example là phần cục bộ và example.com là phần miền.

  • Địa phương – Phần cục bộ của địa chỉ email có thể chứa tổ hợp các ký tự chữ và số, dấu chấm, dấu gạch nối, dấu cộng và dấu gạch dưới. Nó thường được sử dụng để xác định một hộp thư hoặc tài khoản cụ thể trên máy chủ.
  • miền – Phần tên miền của địa chỉ email bao gồm tên miền và tên miền cấp cao nhất của nó (TLD). Tên miền là một chuỗi ký tự xác định máy chủ lưu trữ tài khoản email. TLD chỉ định loại thực thể chịu trách nhiệm về tên miền, chẳng hạn như mã quốc gia (ví dụ: .uk) hoặc tên miền cấp cao nhất chung (ví dụ: .com, .org).

Mặc dù đây là cấu trúc cơ bản của một địa chỉ email, nhưng các quy tắc để cấu thành một địa chỉ email hợp lệ rất phức tạp.

Địa chỉ Email Long Có thể là bao nhiêu?

Tôi đã phải đào một số ngày hôm nay để tìm nó, nhưng bạn có biết độ dài hợp lệ của một địa chỉ email là bao nhiêu không? Nó thực sự được chia thành nhiều phần… Local@Domain.com.

  1. Địa phương có thể là 1 đến 64 ký tự.
  2. Miền có thể từ 1 đến 255 ký tự.

Điều đó có nghĩa là - về mặt kỹ thuật - đây có thể là một địa chỉ email hợp lệ:

loremaipsumadolorasitaametbaconsectetueraadipiscin
gaelitanullamc@loremaipsumadolorasitaametbaconsect
etueraadipiscingaelitcaSedaidametusautanisiavehicu
laaluctuscaPellentesqueatinciduntbadiamaidacondimn
tumarutrumbaturpisamassaaconsectetueraarcubaeuatin
ciduntaliberoaaugueavestibulumaeratcaPhasellusatin
ciduntaturpisaduis.com

Hãy thử gắn điều đó vào danh thiếp! Trớ trêu thay, hầu hết các trường địa chỉ email được giới hạn trong 100 ký tự trên web… điều này không chính xác về mặt kỹ thuật. Một số cụm từ thông dụng khác được sử dụng để xác thực địa chỉ email cũng tìm kiếm miền cấp cao nhất gồm 3 chữ số, như .com; tuy nhiên, không có giới hạn về độ dài của miền cấp cao nhất (ví dụ. Martech Zone có 4 chữ số - .zone).

Biểu thức chính quy

RegEx là một phương pháp hoàn hảo để kiểm tra địa chỉ email vì cấu trúc có lập trình của nó. Các biểu thức chính quy được sử dụng rộng rãi trong các ngôn ngữ lập trình và trình soạn thảo văn bản và thường được tích hợp vào các thư viện hoặc khung xử lý văn bản. Chúng được hỗ trợ bởi nhiều ngôn ngữ lập trình, bao gồm Python, Java, C# và JavaScript, trong số những ngôn ngữ khác.

Việc chuẩn hóa địa chỉ email phức tạp hơn nhiều so với những gì bạn nhận ra. Khi được viết theo tiêu chuẩn, đây là biểu thức chính quy đúng cho địa chỉ email, ghi có biểu thức chính quy:

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?

Mẫu biểu thức chính quy này khớp với định dạng cơ bản của địa chỉ email, bao gồm ký tự chữ và số, dấu chấm, dấu gạch nối, dấu cộng và dấu gạch dưới trong tên người dùng, theo sau là dấu @ biểu tượng, theo sau là một tên miền. Điều quan trọng cần lưu ý là mẫu này sẽ chỉ kiểm tra định dạng của địa chỉ email chứ không phải thực tế sự tồn tại của địa chỉ email.

HTML5 bao gồm xác thực cấu trúc email

Phương tiện dễ nhất để đảm bảo email hợp lệ theo tiêu chuẩn là sử dụng trường nhập email HTML5:

<input type='email' name='email' placeholder='name@domain.com' />

Tuy nhiên, có những lúc, ứng dụng web của bạn vẫn muốn xác thực địa chỉ email cả trong trình duyệt khi được nhập và khi được gửi đến máy chủ của bạn.

Regex để có địa chỉ email thích hợp trong PHP

Ít người nhận ra điều đó, nhưng PHP hiện đã có tiêu chuẩn RFC được tích hợp vào chức năng xác nhận bộ lọc.

if(filter_var("name@domain.com", FILTER_VALIDATE_EMAIL)) {
    // Valid
}
else {
    // Not Valid
}

Regex cho địa chỉ email thích hợp trong C#

Đây là xác nhận cơ bản của một địa chỉ email trong C#

using System;
using System.Text.RegularExpressions;

public class EmailValidator
{
    public static bool IsValidEmail(string email)
    {
        string pattern = @"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$";
        return Regex.IsMatch(email, pattern);
    }
}

Thực tế sử dụng phương pháp này:

string email = "example@example.com";
if (EmailValidator.IsValidEmail(email))
{
    Console.WriteLine(email + " is a valid email address.");
}
else
{
    Console.WriteLine(email + " is not a valid email address.");
}

Regex cho một địa chỉ email thích hợp trong Java

Đây là xác thực cơ bản của một địa chỉ email trong Java

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class EmailValidator {
    private static final Pattern VALID_EMAIL_ADDRESS_REGEX = 
        Pattern.compile("^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,6}$", Pattern.CASE_INSENSITIVE);

    public static boolean isValidEmail(String email) {
        Matcher matcher = VALID_EMAIL_ADDRESS_REGEX .matcher(email);
        return matcher.find();
    }
}

Thực tế sử dụng phương pháp này:

String email = "example@example.com";
if (EmailValidator.isValidEmail(email)) {
    System.out.println(email + " is a valid email address.");
} else {
    System.out.println(email + " is not a valid email address.");
}

Regex cho một địa chỉ email thích hợp trong Python

Đây là xác thực cơ bản của một địa chỉ email trong Python:

import re

def is_valid_email(email):
    pattern = re.compile(r'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$')
    return True if pattern.match(email) else False

Thực tế sử dụng phương pháp này:

email = "example@example.com"
if is_valid_email(email):
    print(f"{email} is a valid email address.")
else:
    print(f"{email} is not a valid email address.")

Regex cho địa chỉ email thích hợp trong JavaScript

Bạn không cần phải có một tiêu chuẩn quá phức tạp để kiểm tra cấu trúc địa chỉ email. Đây là một phương tiện đơn giản bằng cách sử dụng JavaScript.

function validateEmail(email) 
{
    var re = /\\S+@\\S+/;
    return re.test(email);
}

Tất nhiên, đó không phải là tiêu chuẩn RFC, vì vậy bạn có thể muốn xác thực từng phần của dữ liệu để đảm bảo nó hợp lệ. Cụm từ thông dụng này sẽ tuân thủ khoảng 99.9% địa chỉ email ngoài đó. Nó không hoàn toàn theo tiêu chuẩn, nhưng nó hữu ích cho hầu hết mọi dự án.

function validateEmail(email) 
{
  var re = /^(?:[a-z0-9!#$%&amp;'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&amp;'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])$/;

  return re.test(email);
}

Tín dụng cho một số ví dụ này đi đến HTML.form.guide.

Douglas Karr

Douglas Karr là CMO của mởINSIGHTS và người sáng lập ra Martech Zone. Douglas đã giúp hàng chục công ty khởi nghiệp MarTech thành công, đã hỗ trợ thẩm định hơn 5 tỷ USD trong các thương vụ mua lại và đầu tư của Martech, đồng thời tiếp tục hỗ trợ các công ty triển khai và tự động hóa các chiến lược tiếp thị và bán hàng của họ. Douglas là một chuyên gia và diễn giả về chuyển đổi kỹ thuật số và MarTech được quốc tế công nhận. Douglas cũng là tác giả đã xuất bản sách hướng dẫn của Dummie và sách lãnh đạo doanh nghiệp.

Bài viết liên quan

Back to top
Đóng

Đã phát hiện ra khối quảng cáo

Martech Zone có thể cung cấp cho bạn nội dung này miễn phí vì chúng tôi kiếm tiền từ trang web của mình thông qua doanh thu quảng cáo, liên kết đơn vị liên kết và tài trợ. Chúng tôi sẽ đánh giá cao nếu bạn xóa trình chặn quảng cáo của mình khi bạn xem trang web của chúng tôi.