Biểu thức chính quy (regex) là các mẫu mạnh mẽ để tìm, khớp và trích xuất văn bản. Chúng được sử dụng trong lập trình, xác thực dữ liệu, thao tác tìm-thay thế, và phân tích nhật ký. Thách thức là cú pháp regex có thể khó viết đúng. Công cụ Regex Tester miễn phí cho phép bạn thử nghiệm thời gian thực để thấy chính xác mẫu khớp với gì.
Bạn cần gì
- Một mẫu bạn muốn kiểm tra, hoặc bài toán khớp văn bản cần giải quyết
- Một trình duyệt web (Chrome, Firefox, Safari, hoặc Edge)
- Không cần tài khoản hay cài đặt
Hướng dẫn từng bước
Mở Regex Tester
Truy cập công cụ Regex Tester. Bạn sẽ thấy hai vùng chính: một cho mẫu biểu thức chính quy và một cho văn bản thử muốn khớp.
Viết mẫu regex
Nhập biểu thức chính quy trong trường mẫu. Bắt đầu đơn giản và xây dựng phức tạp dần. Ví dụ, bắt đầu với từ nghĩa đen như hello để khớp chính xác văn bản đó, rồi tinh chỉnh mẫu với ký tự đặc biệt để khớp mẫu rộng hơn.
Nhập văn bản thử
Dán hoặc gõ văn bản mẫu trong vùng thử. Bao gồm các ví dụ nên khớp và không nên khớp. Công cụ tô sáng tất cả kết quả khớp thời gian thực khi bạn gõ, để bạn thấy ngay mẫu hoạt động đúng không.
Tinh chỉnh và xác minh
Điều chỉnh mẫu và xem kết quả cập nhật ngay lập tức. Thêm trường hợp đặc biệt vào văn bản thử — đầu vào bất thường, điều kiện biên, và định dạng khó — để đảm bảo regex xử lý đúng. Khi hài lòng, sao chép mẫu vào code hoặc công cụ.
Lưu ý Regex Tester chạy hoàn toàn trong trình duyệt. Không có dữ liệu nào được gửi đến máy chủ, nên bạn có thể an toàn kiểm tra mẫu với văn bản nhạy cảm như địa chỉ email, file nhật ký, hoặc dữ liệu cá nhân.
Cú pháp regex cơ bản
| Ký hiệu | Ý nghĩa | Ví dụ |
|---|---|---|
. |
Bất kỳ ký tự đơn nào | h.t khớp "hat", "hit", "hot" |
* |
Không hoặc nhiều ký tự trước | ab*c khớp "ac", "abc", "abbc" |
+ |
Một hoặc nhiều ký tự trước | ab+c khớp "abc", "abbc" nhưng không "ac" |
? |
Không hoặc một ký tự trước | colou?r khớp "color" và "colour" |
\d |
Bất kỳ chữ số (0-9) | \d{3} khớp "123", "456" |
\w |
Bất kỳ ký tự từ | \w+ khớp "hello", "test123" |
\s |
Bất kỳ khoảng trắng | hello\sworld khớp "hello world" |
^ |
Đầu chuỗi | ^Hello khớp "Hello world" |
$ |
Cuối chuỗi | world$ khớp "Hello world" |
[abc] |
Bất kỳ ký tự trong tập | [aeiou] khớp bất kỳ nguyên âm nào |
(...) |
Nhóm bắt | (ab)+ khớp "ab", "abab" |
Các mẫu phổ biến bạn có thể thử
Sao chép các mẫu này vào Regex Tester và thử nghiệm.
Địa chỉ email
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
Khớp các định dạng email chuẩn như user@example.com và first.last@company.co.uk. Kiểm tra với cả định dạng email hợp lệ và không hợp lệ để xem cách xử lý trường hợp đặc biệt.
URL
https?://[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}(/[^\s]*)?
Khớp URL HTTP và HTTPS như https://example.com và http://site.org/path/page. s? làm chữ "s" trong "https" tùy chọn.
Số điện thoại (định dạng Mỹ)
(\+1[-.\s]?)?\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}
Khớp nhiều định dạng số điện thoại Mỹ: (555) 123-4567, 555-123-4567, +1 555.123.4567, và các biến thể tương tự.
Mẹo Khi xây dựng regex, bắt đầu với mẫu đơn giản nhất khớp văn bản mục tiêu rồi thêm ràng buộc từng cái một. Cố viết regex phức tạp cùng lúc khó hơn nhiều so với xây dựng tăng dần trong khi xem kết quả khớp cập nhật thời gian thực.
Lỗi phổ biến và cách tránh
Quên escape ký tự đặc biệt. Ký tự như ., *, +, ?, (, ), [, ], {, } có ý nghĩa đặc biệt trong regex. Để khớp nghĩa đen, thêm dấu gạch chéo ngược: \. khớp dấu chấm, \( khớp dấu ngoặc.
Quá tham lam. Mặc định, * và + khớp càng nhiều văn bản càng tốt. Nếu muốn kết quả ngắn nhất, thêm ? sau: .*? khớp ít nhất có thể.
Không neo mẫu. Không có ^ và $, mẫu như \d{3} sẽ khớp bất kỳ ba chữ số liên tiếp nào ở bất kỳ đâu trong chuỗi, kể cả bên trong số dài hơn. Sử dụng neo khi cần khớp toàn bộ chuỗi.
Quan trọng Cú pháp regex khác nhau nhẹ giữa các ngôn ngữ lập trình và công cụ. Mẫu hoạt động trong JavaScript có thể khác trong Python hoặc PHP. Luôn kiểm tra mẫu cuối cùng trong ngôn ngữ hoặc môi trường sử dụng thực tế.
Câu hỏi thường gặp
Cờ regex là gì?
Cờ sửa đổi cách áp dụng mẫu. Các cờ phổ biến bao gồm g (toàn cục — tìm tất cả kết quả, không chỉ đầu tiên), i (không phân biệt hoa thường), và m (nhiều dòng — ^ và $ khớp ranh giới dòng, không chỉ ranh giới chuỗi). Regex Tester cho phép bật/tắt các cờ này.
Tôi có thể dùng regex cho tìm và thay thế không?
Có. Hầu hết trình soạn thảo văn bản và ngôn ngữ lập trình hỗ trợ tìm thay thế dựa regex. Nhóm bắt (...) cho phép tham chiếu văn bản đã khớp trong chuỗi thay thế.
Làm sao khớp qua nhiều dòng?
Sử dụng cờ s (dotall) để . khớp ký tự xuống dòng, hoặc sử dụng [\s\S] như giải pháp đa nền tảng khớp bất kỳ ký tự nào kể cả xuống dòng.
Bước tiếp theo
Bây giờ bạn đã biết xây dựng và kiểm tra mẫu regex, hãy thử sử dụng trong code, trình soạn thảo văn bản, hoặc công cụ dòng lệnh. Cho các tiện ích lập trình khác, xem Trình phân tích Cron cho biểu thức lịch trình hoặc JSON Formatter cho làm việc với dữ liệu có cấu trúc.