Cách dùng Kiểm tra Regex
- Nhập mẫu của bạn giữa hai dấu gạch chéo, hoặc chọn một mẫu trong Mẫu thường dùng. Bạn cũng có thể dán cả literal đầy đủ như
/\d+/g. - Bật/tắt các cờ như
g(tìm tất cả kết quả),i(không phân biệt hoa thường) hoặcm(nhiều dòng). - Dán văn bản vào Chuỗi kiểm tra — mọi kết quả khớp sẽ được tô sáng khi bạn gõ.
- Xem tab Matches để biết vị trí và nhóm bắt, hoặc mở Replace để xem trước kết quả thay thế.
- Nhấn Copy để sao chép regex dạng
/pattern/flags; mẫu và cờ cũng được lưu trên URL trang để bạn chia sẻ.
Kiểm tra regex là gì?
Biểu thức chính quy (regex) là ngôn ngữ mẫu ngắn gọn dùng để tìm kiếm và biến đổi văn bản — kiểm tra trường email, trích xuất ID từ log, đổi tên file hoặc làm sạch dữ liệu. Vì chỉ một ký tự cũng có thể làm thay đổi kết quả khớp, việc thử và sai regex trực tiếp trong mã nguồn rất chậm. Công cụ kiểm tra regex cho bạn thấy ngay mẫu khớp với gì, nhóm bắt nào được điền và kết quả thay thế sẽ ra sao.
Công cụ này dùng chính bộ máy regex JavaScript (ECMAScript) của trình duyệt, nên kết quả giống hệt những gì String.prototype.match, matchAll, replace và RegExp.test trả về trên Chrome, Firefox, Safari, Node.js và Deno. Mẫu được chạy trong worker nền với giới hạn thời gian, nên một mẫu chạy vô hạn cũng không làm đơ trang.
Các cờ regex trong JavaScript
| Cờ | Tên | Tác dụng |
|---|---|---|
g | global | Tìm mọi kết quả khớp thay vì dừng ở kết quả đầu tiên. |
i | ignoreCase | /abc/i khớp với “ABC”. |
m | multiline | ^ và $ khớp với đầu và cuối của từng dòng. |
s | dotAll | . cũng khớp với ký tự xuống dòng. |
u | unicode | Coi cặp surrogate (emoji) là một ký tự và bật các escape thuộc tính \p{…}. |
y | sticky | Chỉ khớp tại vị trí lastIndex — hữu ích khi viết bộ tách token. |
Nhóm bắt, nhóm có tên và thay thế
Dấu ngoặc đơn bắt lấy phần văn bản mà nó khớp. Trong (\d{4})-(\d{2}), nhóm 1 là năm và nhóm 2 là tháng. Nhóm có tên giúp mẫu tự giải thích: (?<year>\d{4}) có thể dùng trong code qua match.groups.year và trong chuỗi thay thế qua $<year>. Ví dụ, thay (?<y>\d{4})-(?<m>\d{2})-(?<d>\d{2}) bằng $<d>/$<m>/$<y> sẽ biến 2026-10-25 thành 25/10/2026. Dùng (?:…) khi bạn muốn nhóm các phần tử mà không bắt lấy chúng.
Backtracking thảm họa
Các mẫu có bộ lượng từ lồng nhau như (a+)+$ hoặc (\w+\s?)*$ có thể mất thời gian theo hàm mũ với đầu vào gần khớp — nguyên nhân kinh điển khiến trình duyệt bị treo và gây lỗ hổng ReDoS trên máy chủ. Nếu một mẫu chạy quá 1,5 giây tại đây, nó sẽ bị dừng và được đánh dấu. Cách khắc phục: làm các nhánh loại trừ lẫn nhau, thay .* bằng lớp phủ định như [^"]*, hoặc neo mẫu bằng ký hiệu đầu/cuối.
Mẹo viết mẫu đáng tin cậy
- Neo các mẫu kiểm tra bằng
^…$, nếu không\d{5}cũng sẽ “hợp lệ” vớiabc123456. - Escape các ký tự đặc biệt khi cần dùng nguyên văn:
\.\?\(\[\$. - Ưu tiên lớp ký tự cụ thể thay vì
.*; chúng nhanh hơn và khớp đúng với ý bạn muốn. - Regex không phù hợp với các định dạng lồng nhau như HTML hay JSON — hãy dùng bộ phân tích cú pháp (hoặc thử JSON Formatter của chúng tôi).
- Cần so sánh văn bản trước và sau khi thay thế toàn bộ? Dán cả hai vào Diff Checker.
Cũng được tìm dưới tên: regex tester, test regex online, biểu thức chính quy, regex javascript, kiểm tra biểu thức chính quy, regex checker, regex replace.
Các công cụ dùng kèm tốt với Kiểm tra Regex
- Định dạng JavaScript — Giải nén và định dạng lại JavaScript, JSON hoặc JSX với kiểu thụt lề và dấu ngoặc bạn chọn, hoặc loại bỏ khoảng trắng và chú thích bằng bộ thu gọn đã được kiểm chứng.
- Mã hóa / Giải mã URL — Mã hóa văn bản để dùng an toàn trong URL, giải mã chuỗi đã mã hóa về dạng dễ đọc và tách mọi URL thành các phần cùng tham số truy vấn.
- Tạo slug URL — Chuyển mọi tiêu đề thành slug URL gọn gàng, viết thường, với cách bỏ dấu, chuyển ä/ö/ü và chữ Cyrillic chính xác.
- Xóa Dòng Trùng Lặp — Dán danh sách để xóa dòng trùng lặp ngay lập tức.
Câu hỏi thường gặp
Công cụ này dùng loại regex nào?
\A/\Z hay bộ sửa đổi nội tuyến như (?i).Vì sao mẫu của tôi chỉ tìm được một kết quả?
g (global), JavaScript sẽ dừng ở kết quả khớp đầu tiên. Hãy bật g để tìm tất cả — công cụ cũng sẽ nhắc bạn khi cờ này đang tắt.Làm sao để khớp qua nhiều dòng?
m để ^ và $ hoạt động theo từng dòng, và cờ s (hoặc [\s\S]) nếu bạn muốn . cũng khớp với ký tự xuống dòng.Văn bản thử nghiệm của tôi có được lưu hay tải lên không?
Regex nào tốt để kiểm tra địa chỉ email?
^[^\s@]+@[^\s@]+\.[^\s@]+$ (hoặc mẫu “Email address” có sẵn). Các mẫu tuân thủ đầy đủ RFC 5322 rất dài và vẫn không cho bạn biết hộp thư có tồn tại hay không — việc đó cần gửi email xác nhận.