Regex Tester (Live)
(a+)+ that can cause exponential backtracking.Enter a pattern and test string to see matches.
This tester uses JavaScript RegExp — the same engine that runs in your browser and Node.js. All matching happens instantly in-browser; your test strings are never sent to any server.
(?P<name>...) — in JS: (?<name>...).
Lookaheads, backreferences, and most syntax are compatible.
Có một câu đùa quen thuộc trong giới lập trình: "Bạn có một vấn đề, bạn dùng regex để giải quyết — bây giờ bạn có hai vấn đề." Regex (Regular Expression) nổi tiếng là mạnh nhưng khó đọc, dễ sai, và debug rất mệt nếu không có công cụ hỗ trợ. Tool Regex Tester này giúp bạn viết, kiểm tra và debug regex theo thời gian thực — thấy ngay match ở đâu, group nào bắt được gì, không cần chạy code.
Regular Expression (Regex) là gì?
Regular Expression — gọi tắt là regex hoặc regexp — là một chuỗi ký tự đặc biệt định nghĩa một pattern (mẫu) để tìm kiếm, so khớp hoặc thao tác với chuỗi văn bản. Regex được hỗ trợ trong hầu hết mọi ngôn ngữ lập trình: JavaScript, Python, PHP, Java, Go, Ruby…
Ví dụ đơn giản: pattern \d{3}-\d{4} sẽ khớp với số điện thoại dạng 123-4567. Pattern [a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,} là regex kiểm tra email — trông phức tạp nhưng có logic rất rõ ràng khi được "dịch" từng phần.
Regex được dùng để: validate dữ liệu đầu vào (email, số điện thoại, mật khẩu), tìm kiếm và thay thế text, extract thông tin từ log file, parse chuỗi có cấu trúc, và nhiều hơn thế.
Cú pháp regex cơ bản cần biết
| Ký hiệu | Ý nghĩa | Ví dụ |
|---|---|---|
. | Bất kỳ ký tự nào (trừ xuống dòng) | a.c khớp "abc", "a1c", "a-c" |
* | 0 hoặc nhiều lần lặp | ab*c khớp "ac", "abc", "abbc" |
+ | 1 hoặc nhiều lần lặp | ab+c khớp "abc", "abbc" nhưng không khớp "ac" |
? | 0 hoặc 1 lần (tùy chọn) | colou?r khớp cả "color" và "colour" |
{n} | Đúng n lần | \d{4} khớp đúng 4 chữ số |
{n,m} | Từ n đến m lần | \d{2,4} khớp 2, 3 hoặc 4 chữ số |
[abc] | Một trong các ký tự trong ngoặc | [aeiou] khớp một nguyên âm bất kỳ |
[^abc] | Ký tự KHÔNG nằm trong ngoặc | [^0-9] khớp ký tự không phải số |
^ | Bắt đầu chuỗi (hoặc dòng) | ^Hello chỉ khớp nếu chuỗi bắt đầu bằng "Hello" |
$ | Kết thúc chuỗi (hoặc dòng) | world$ chỉ khớp nếu chuỗi kết thúc bằng "world" |
(abc) | Capturing group — bắt nhóm | (\d{4})-(\d{2}) bắt năm và tháng riêng |
(?:abc) | Non-capturing group — nhóm không bắt | Nhóm logic mà không lưu kết quả |
a|b | Hoặc — a hoặc b | cat|dog khớp "cat" hoặc "dog" |
\d | Chữ số (0-9) | Tương đương [0-9] |
\w | Ký tự chữ-số-gạch dưới | Tương đương [a-zA-Z0-9_] |
\s | Khoảng trắng (space, tab, newline) | Dùng để tìm/xoá whitespace thừa |
Regex flags — điều chỉnh cách hoạt động
| Flag | Tên | Tác dụng |
|---|---|---|
g | Global | Tìm tất cả match, không dừng ở match đầu tiên |
i | Case-insensitive | Không phân biệt chữ hoa/thường: /hello/i khớp cả "Hello", "HELLO" |
m | Multiline | ^ và $ áp dụng cho từng dòng, không chỉ đầu/cuối toàn chuỗi |
s | Dotall | Dấu . khớp cả ký tự xuống dòng |
u | Unicode | Xử lý chuỗi Unicode đúng cách, cần thiết khi làm việc với tiếng Việt, emoji… |
Cách sử dụng Regex Tester
- Bước 1: Nhập regex pattern vào ô Pattern — không cần thêm dấu
/bao quanh. - Bước 2: Chọn flags phù hợp:
gđể tìm tất cả,iđể không phân biệt hoa/thường… - Bước 3: Dán văn bản cần test vào ô Test String — các đoạn khớp sẽ được highlight ngay lập tức.
- Bước 4: Xem chi tiết các Match và Capturing Groups ở phần kết quả bên dưới.
Mọi thứ hoạt động real-time — chỉnh pattern là kết quả cập nhật ngay, không cần nhấn nút.
Ví dụ regex thực tế hay dùng
| Mục đích | Regex pattern |
|---|---|
| Validate địa chỉ email | ^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,}$ |
| Validate số điện thoại Việt Nam | ^(0|\+84)(3|5|7|8|9)\d{8}$ |
| Validate URL (http/https) | ^https?:\/\/[\w.-]+(:\d+)?(\/.*)?$ |
| Tìm tất cả số trong chuỗi | \d+ với flag g |
| Xoá khoảng trắng đầu và cuối | ^\s+|\s+$ replace với "" |
| Validate mật khẩu (8+ ký tự, có hoa, thường, số) | ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$ |
| Tìm thẻ HTML | <[^>]+> |
| Extract ngày dạng DD/MM/YYYY | (\d{2})\/(\d{2})\/(\d{4}) |
Lỗi thường gặp khi viết regex
- Quên escape ký tự đặc biệt: Các ký tự
. * + ? ( ) [ ] { } ^ $ | \đều có ý nghĩa đặc biệt trong regex. Để match nghĩa đen của chúng, phải escape bằng\. Ví dụ: muốn match dấu chấm thật phải viết\., không phải.. - Greedy vs Lazy matching: Mặc định regex là "greedy" — cố match càng nhiều càng tốt.
<.+>trên chuỗi<a>text</a>sẽ match toàn bộ từ<a>đến</a>. Thêm?để lazy:<.+?>chỉ match từng thẻ riêng lẻ. - Quên flag
g: Không có flag global, regex chỉ trả về match đầu tiên — gây nhầm lẫn khi bạn muốn tìm tất cả. - Anchoring sai: Pattern
\d+khớp số ở bất kỳ đâu trong chuỗi. Nếu muốn validate chuỗi chỉ gồm số, phải dùng^\d+$.
Kết luận
Regex là một trong những kỹ năng "siêu năng lực" của developer — học một lần, dùng được mọi ngôn ngữ, giải quyết được vô số bài toán xử lý chuỗi. Cái khó nhất là giai đoạn đầu khi nhìn pattern mà không biết nó đang làm gì. Tool Regex Tester này chính là người đồng hành trong giai đoạn đó — test nhanh, xem kết quả ngay, hiểu từng phần.
Khám phá thêm các tool hữu ích tại codetuthub.com/tools.