Kiểm thử Regex (kết quả khớp trực tiếp, nhóm, thay thế)
Nhập regex và văn bản kiểm thử — các kết quả khớp được đánh dấu trực tiếp khi bạn nhập. Chuyển đổi cờ (g/i/m/s/u), kiểm tra nhóm bắt giữ và xem trước thay thế.
Cách hoạt động
Các cờ làm gì
g (global): tìm tất cả kết quả khớp, không chỉ kết quả đầu tiên. Cần thiết cho hành vi thay-thế-tất-cả. i (không phân biệt chữ hoa thường): /[a-z]/i khớp cả hai kiểu. m (đa dòng): ^ và $ khớp tại xuống dòng thay vì chỉ đầu/cuối chuỗi. s (dotall): . khớp cả ký tự xuống dòng. u (unicode): xử lý đúng các code point trên 0xFFFF (emoji, CJK trong surrogate pair).
Hầu hết mọi người bắt đầu với /g/i/m. /s/ hữu ích cho khớp văn bản nhiều dòng. /u/ được khuyến nghị bất cứ khi nào bạn có thể gặp emoji hoặc ký tự non-BMP — không có nó, /./ không khớp emoji 4-byte như một ký tự duy nhất.
Nhóm bắt giữ và thay thế
Dấu ngoặc đơn tạo nhóm bắt giữ: /(\d{4})-(\d{2})/ trên '2026-05' bắt giữ '2026' và '05' riêng biệt. Tham chiếu chúng là $1, $2 trong chuỗi thay thế. Nhóm đặt tên dùng (?<tên>...) và tham chiếu $<tên> trong thay thế.
Mẹo thay thế phổ biến: $& chèn toàn bộ kết quả khớp. $1, $2 v.v. chèn nhóm bắt giữ. $$ chèn ký tự $ thực. Bản xem trước thay thế ở đây cho phép kiểm tra trước khi chạy cùng mẫu trên văn bản thực — an toàn hơn nhiều so với chạy trực tiếp trên dữ liệu sản xuất.
Những cạm bẫy cần lưu ý
Ký tự thoát backslash. Để khớp ký tự '.' theo nghĩa đen, dùng '\.'. Trong mã JavaScript nguồn đây trở thành '\\.' nhưng trong công cụ này bạn chỉ nhập '\.' vì đó là nguồn regex.
Quay lui thảm họa. Các mẫu như /(a+)+/ trên 'aaaa…!' có thể mất mãi mãi. Nếu kiểm thử của bạn có vẻ bị treo, regex của bạn có thể có quantifier lồng nhau. Đơn giản hóa hoặc dùng nhóm possessive/atomic (không có trong JS regex; hãy thiết kế cẩn thận thay thế).
Tham lam so với lười biếng. /<.+>/ trên '<a><b>' khớp '<a><b>' (tham lam). /<.+?>/ khớp '<a>' (lười biếng). Chọn cái phù hợp với trường hợp sử dụng của bạn.
Câu hỏi thường gặp
›Công cụ này dùng loại regex nào?
Regex ECMAScript JavaScript (loại trình duyệt của bạn triển khai). Nó khác một chút so với PCRE dùng trong PHP, .NET hay Python.
›Tại sao lookbehind không hoạt động?
Có trong các trình duyệt hiện đại — Chrome, Firefox, Safari, Edge đều hỗ trợ (?<=...) và (?<!...) từ năm 2021. Nếu của bạn không hỗ trợ, trình duyệt có thể đã lỗi thời.
›Cờ 'u' làm gì?
Kích hoạt xử lý Unicode đúng. Emoji như 🎉 (là surrogate pair trong UTF-16) được coi là một ký tự với /u/ nhưng là hai ký tự ở chế độ mặc định.
›Làm sao khớp tab hoặc xuống dòng?
\t cho tab, \n cho xuống dòng, \r cho carriage return, \s cho bất kỳ khoảng trắng nào bao gồm tất cả những cái đó.
›Tại sao thay thế của tôi không hoạt động?
Thường là bạn quên cờ 'g' — thay thế không có 'g' chỉ thay thế kết quả khớp đầu tiên. Bật 'g' để thay thế tất cả.
›Tôi có thể dùng cái này cho văn bản rất dài không?
Có, đến vài MB. Ngoài đó, trình duyệt có thể chậm lại. Tránh các mẫu thảm họa (quantifier lồng nhau) trên đầu vào dài.
›Dữ liệu có rời khỏi trình duyệt không?
Không. Mẫu và văn bản chỉ được xử lý cục bộ.
›Có bảng cheat sheet về regex không?
Tìm kiếm 'JavaScript regex cheat sheet'. Trang RegExp của MDN là tài liệu tham khảo chính thức.
Công cụ liên quan
Cập nhật lần cuối: