Skip to content

🔍 Regular Expression trong PHP (Biểu thức chính quy)

Regular Expression (Regex) là một chuỗi ký tự mô tả một mẫu tìm kiếm. Trong PHP, regex thường được sử dụng để:

  • Kiểm tra định dạng email, số điện thoại
  • Lọc nội dung chuỗi
  • Thay thế chuỗi

🔤 Từ vựng:
Regular Expression (Regex): Biểu thức chính quy
Pattern: Mẫu tìm kiếm
Modifier: Tham số tùy chỉnh (ví dụ: không phân biệt hoa thường)
Match: Khớp (trùng với điều kiện tìm kiếm)
Replace: Thay thế


📌 Cú pháp cơ bản

Một biểu thức chính quy thường có dạng:

/pattern/modifier
  • pattern: Mẫu tìm kiếm
  • modifier: Tùy chọn (ví dụ i không phân biệt hoa thường)

🧪 Hàm regex thường dùng trong PHP

HàmMô tả
preg_match()Kiểm tra chuỗi có khớp với regex không
preg_match_all()Trả về tất cả kết quả khớp
preg_replace()Thay thế nội dung khớp bằng nội dung khác

🔤 Từ vựng:
preg_: prefix dùng trong PHP cho các hàm xử lý regex
match: so khớp
all: tất cả
replace: thay thế


📖 Ví dụ thực tế thường gặp

✅ 1. Kiểm tra Email


$email = "[email protected]";
$pattern = "/^[\w\-\.]+@([\w\-]+\.)+[\w\-]{2,4}$/";

if (preg_match($pattern, $email)) {
    echo "Email hợp lệ";
} else {
    echo "Email không hợp lệ";
}

Giải thích: Mẫu regex kiểm tra email có chứa đúng định dạng username@domain

✅ 2. Kiểm tra số điện thoại (10 chữ số)


$phone = "0987654321";
$pattern = "/^[0-9]{10}$/";

if (preg_match($pattern, $phone)) {
    echo "Số điện thoại hợp lệ";
}

✅ 3. Kiểm tra chuỗi chỉ chứa chữ cái


$name = "NguyenVanA";
$pattern = "/^[a-zA-Z]+$/";

if (preg_match($pattern, $name)) {
    echo "Tên chỉ chứa chữ cái";
}

✅ 4. Kiểm tra mật khẩu mạnh

Ít nhất 8 ký tự, chứa ít nhất 1 chữ in hoa và 1 chữ số.


$password = "Abc12345";
$pattern = "/^(?=.*[A-Z])(?=.*\d).{8,}$/";

if (preg_match($pattern, $password)) {
    echo "Mật khẩu mạnh";
}

🔤 Từ vựng:
A-Z: Chữ hoa
\d: Chữ số
{8,}: ít nhất 8 ký tự

✅ 5. Thay thế từ thô tục


$text = "This is damn bad!";
$clean = preg_replace("/damn/i", "***", $text);
echo $clean; // This is *** bad!

🧠 Ký hiệu thường dùng trong Regex

Ký hiệuÝ nghĩaVí dụ
\dChữ số (0–9)/\d{3}/ → 3 chữ số
\wKý tự chữ và số (a–z, A–Z, 0–9, _)/\w+/
\sKhoảng trắng (space, tab…)/\s/
.Khớp mọi ký tự/a.c/ → “abc”, “axc”
^Bắt đầu chuỗi/^Hello/
$Kết thúc chuỗi/world$/
[a-z]Khoảng ký tự từ a đến z[0-9]
+1 lần trở lên/\d+/
*0 hoặc nhiều lần/a*/
{n}Chính xác n lần/\d{4}/ → 4 số

📦 Mẹo học Regex

  • Sử dụng regex101.com để thử mẫu
  • Nhớ sử dụng dấu / làm dấu phân cách mẫu
  • Chia nhỏ bài toán để viết regex dễ hơn

🔤 Từ vựng bổ sung:
Delimiter: Dấu phân cách regex (ví dụ: /)
Syntax: Cú pháp
Wildcard: Ký tự đại diện (ví dụ .)
Anchor: Ký hiệu neo chuỗi (ví dụ ^, $)

Tags:

Leave a Reply

Your email address will not be published. Required fields are marked *