Kiểm tra Regex
Kiểm tra cục bộ các biểu thức chính quy JavaScript bằng cờ g/i/m/s/u/y, số lượng khớp, nhóm chụp và đặt tên, phạm vi cột dòng và bản xem trước thay thế gốc.
/
/g
Văn bản kiểm tra
Ký tự
0 / 50,000
Kết quả khớp
Nhập một mẫu để bắt đầu khớp
Văn bản thay thế
Ký tự
0 / 50,000
Xem trước thay thế
Bắt đầu nhanh
Tình huống sử dụng phổ biến
Trích xuất dữ liệu
dùng (\d{4}-\d{2}-\d{2}) để lấy ngày tháng và ([\w.]+@[\w.]+) để lấy địa chỉ email
Kiểm tra định dạng
viết regex, dán nhiều mẫu và nhanh chóng xác minh xem mẫu có khớp chính xác với định dạng mục tiêu hay không
Thay thế hàng loạt
dùng nhóm bắt để sắp xếp lại nội dung. Ví dụ, đổi "Tên Họ" thành "Họ, Tên" bằng mẫu (\S+)\s+(\S+) và chuỗi thay thế $2, $1
Các nhóm được đặt tên
sử dụng (?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2}) để trích xuất ngày, sau đó sử dụng $<year>/$<month>/$<day> để xây dựng lại chúng
Học regex
thử các mẫu khác nhau và quan sát hành vi khớp để hiểu trực quan về lượng từ, neo và lớp ký tự
Xử lý nhiều dòng
bật cờ m để ^ và $ khớp theo từng dòng, hữu ích cho log, mã nguồn và tệp cấu hình
Gợi ý sử dụng
Giới hạn & khả năng tương thích
Quyền riêng tư & bảo mật
Câu hỏi thường gặp
Biểu thức chính quy (regex) là ngôn ngữ dùng để mô tả mẫu văn bản. Bạn có thể xem nó như một kiểu "tìm kiếm nâng cao": thay vì tìm một từ cố định, bạn tìm mọi chuỗi phù hợp với một quy tắc.\n\nVí dụ, \\d{4}-\\d{2}-\\d{2} sẽ khớp các ngày ở dạng YYYY-MM-DD, còn [\\w.]+@[\\w.]+ sẽ khớp địa chỉ email. Regex thường được dùng để tìm và trích xuất dữ liệu (như mã lỗi trong log), kiểm tra định dạng (như số điện thoại hoặc email), và thay thế hàng loạt (như đổi định dạng ngày tháng).\n\nHầu hết ngôn ngữ lập trình (JavaScript, Python, Java, Go...) và nhiều công cụ như VS Code, grep, sed đều hỗ trợ regex với cú pháp khá tương đồng. Công cụ này dùng động cơ JavaScript RegExp để bạn thử nhanh và học trực tiếp trên trình duyệt.
Theo mặc định, regex trong JavaScript chỉ trả về kết quả khớp đầu tiên. Đây là hành vi của ngôn ngữ chứ không phải giới hạn của công cụ. Hãy bật cờ g trong thanh cờ để tìm tất cả kết quả khớp.\n\nCũng cần lưu ý sự khác nhau giữa g và y: g sẽ quét toàn bộ văn bản từ đầu đến cuối, còn y (sticky) yêu cầu mỗi lần khớp phải bắt đầu đúng tại vị trí mà lần khớp trước kết thúc. Nếu giữa hai lần khớp có ký tự ngăn cách, y sẽ dừng ngay tại đó. Trong đa số trường hợp, chỉ bật g là đủ.
Bốn nguyên nhân thường gặp là: 1. Thiếu cặp ngoặc: mỗi ( cần một ), mỗi [ cần một ]. IDE có thể tự thêm, nhưng công cụ vẫn kiểm tra đúng pattern bạn nhập. 2. Đặt quantifier sai vị trí: *, +, ?, {n} phải đứng sau phần có thể lặp. Các tổ hợp như *+ hoặc ?* không hợp lệ; quantifier dạng lazy viết là *? hoặc +?. 3. Escape chưa hoàn chỉnh: dấu \ đơn lẻ ở cuối pattern không hợp lệ; nó phải escape một ký tự cụ thể như \d, \n hoặc \\. 4. Dùng Unicode property mà thiếu cờ u: \p{L}, \p{Script=Han} và các property escape tương tự cần bật cờ u trong công cụ này.
Đây là các tham chiếu thay thế của JavaScript String.prototype.replace(): - $1, $2, ..., $99: nội dung của nhóm capture tương ứng. - $&: toàn bộ đoạn khớp. - $`: văn bản trước đoạn khớp. - $': văn bản sau đoạn khớp. - $<name>: nội dung của nhóm đặt tên (?<name>...). Ví dụ: nếu (\w+)\s(\w+) khớp với “hello world”, thay bằng $2-$1 sẽ cho “world-hello”. Để chèn ký tự $ thật trong chuỗi thay thế, hãy viết $$.
Regex engine khác nhau giữa các ngôn ngữ ở ba điểm chính: 1. Cú pháp được hỗ trợ: JavaScript không hỗ trợ đệ quy PCRE (?R), nhánh điều kiện (?(cond)yes|no) hoặc atomic group (?>...). Python re cũng không hỗ trợ, còn module regex bên ngoài hỗ trợ một phần. Java hỗ trợ atomic group nhưng không hỗ trợ đệ quy. 2. Unicode: trong JavaScript, \w chủ yếu khớp chữ Latin cơ bản, chữ số và dấu gạch dưới. Bật u không làm nó tự khớp ký tự Trung Quốc. Với chữ Unicode, hãy dùng property escape như \p{L} cùng cờ u. 3. Xuống dòng: trong Python, . mặc định không khớp \n, giống JavaScript. Pattern.DOTALL của Java gần với cờ s của JavaScript. Hãy dùng công cụ này để kiểm tra nhanh JavaScript RegExp, rồi xác nhận lại bằng engine thật của ngôn ngữ đích.