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àm | Mô 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ĩa | Ví dụ |
---|---|---|
\d | Chữ số (0–9) | /\d{3}/ → 3 chữ số |
\w | Ký tự chữ và số (a–z, A–Z, 0–9, _) | /\w+/ |
\s | Khoả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ụ ^
, $
)