Regex cơ bản cho developer: cú pháp, nhóm và các bẫy thường gặp
22/07/2026
Biểu thức chính quy (regular expression, viết tắt regex) là công cụ khớp mẫu (pattern matching) mạnh mẽ có mặt trong hầu hết ngôn ngữ. Nhưng vì cú pháp cô đọng, regex cũng nổi tiếng khó đọc. Bài viết này gói gọn những gì bạn dùng 90% thời gian.
Các khối cơ bản
.khớp một ký tự bất kỳ (trừ xuống dòng, trừ khi bật cờ dotall)\dchữ số,\wký tự từ (chữ/số/gạch dưới),\skhoảng trắng — viết hoa là phủ định (\D,\W,\S)[abc]character class: khớp một trong a, b, c;[^abc]là loại trừ^đầu chuỗi/dòng,$cuối chuỗi/dòng
Quantifier — số lần lặp
*0 hoặc nhiều,+1 hoặc nhiều,?0 hoặc 1{2,5}từ 2 đến 5 lần;{3}đúng 3 lần- Mặc định là tham lam (greedy). Thêm
?để thành lười (lazy):<.+?>
Nhóm và bắt giá trị
Dấu ngoặc ( ) tạo nhóm bắt (capturing group), truy xuất qua chỉ số 1, 2... Dùng nhóm không bắt (?: ) khi chỉ cần gom mà không cần lưu. Nhóm đặt tên (?<year>\d{4}) giúp code dễ đọc.
const re = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/;
const m = "2026-07-22".match(re);
console.log(m.groups.year); // "2026"
Những bẫy hay gặp
- Quên escape dấu chấm khi muốn khớp dấu chấm thật: viết
\.chứ không phải. - Regex greedy nuốt quá nhiều:
<.+>trên<a><b>khớp cả chuỗi - Catastrophic backtracking: các mẫu lồng nhau như
(a+)+có thể treo CPU với input độc hại
👉 Dùng thử công cụ liên quan trên dev-hub: Regex Tester — chạy hoàn toàn trong trình duyệt, không gửi dữ liệu lên server.