Bảng tra cứu và Trình minh hoạ Regex

Học nhanh các ký hiệu biểu thức chính quy, tách một mẫu thành những phần dễ hiểu và thử ngay trên văn bản của bạn. Mọi thứ đều chạy trong trình duyệt.

/
/
Dán một biểu thức chính quy để xem giải thích từng phần.
Cờ
Các phần
Nhập một mẫu ở trên để xem các phần của nó.

Không bắt buộc. Nhập hoặc dán văn bản, kết quả khớp sẽ hiện ra khi bạn gõ.

Bảng tra cứu


. Bất kỳ ký tự nào trừ ký tự xuống dòng Ví dụ: a.c
\d Một chữ số (0-9) Ví dụ: \d+
\D Bất kỳ ký tự nào không phải chữ số Ví dụ: \D+
\w Ký tự từ (a-z, A-Z, 0-9, _) Ví dụ: \w+
\W Bất kỳ ký tự nào không phải ký tự từ Ví dụ: \W+
\s Một ký tự khoảng trắng Ví dụ: \s+
\S Bất kỳ ký tự nào không phải khoảng trắng Ví dụ: \S+
^ Đầu văn bản Ví dụ: ^hello
$ Cuối văn bản Ví dụ: world$
\b Ranh giới từ Ví dụ: \bword\b
\B Vị trí không phải ranh giới từ Ví dụ: \Bword\B
[abc] Tập ký tự Ví dụ: [abc]+
[^abc] Tập phủ định Ví dụ: [^abc]+
[a-z] Tập ký tự Ví dụ: [a-z0-9]+
(abc) Nhóm bắt Ví dụ: (abc)
(?:abc) Nhóm không bắt Ví dụ: (?:abc)+
(?<n>) Nhóm có tên Ví dụ: (?<year>\d{4})
\1 Tham chiếu ngược Ví dụ: (\w)\1
a|b Lựa chọn Ví dụ: cat|dog
? Tuỳ chọn (0 hoặc 1) Ví dụ: colou?r
* Lặp 0 lần trở lên Ví dụ: a*
+ Lặp 1 lần trở lên Ví dụ: a+
{m,n} Lặp đúng số lần đã định Ví dụ: a{2,4}
+? Cũng vậy, nhưng ngắn nhất có thể Ví dụ: <.+?>
(?=) Chỉ khi theo sau là Ví dụ: foo(?=bar)
(?!) Chỉ khi theo sau không phải là Ví dụ: foo(?!bar)
(?<=) Chỉ khi đứng trước là Ví dụ: (?<=\$)\d+
(?<!) Chỉ khi đứng trước không phải là Ví dụ: (?<!\$)\d+
\. Coi ký tự kế tiếp là ký tự thường Ví dụ: 3\.14
\n Ký tự xuống dòng Ví dụ: line\n
\t Ký tự tab Ví dụ: \tindented

Các mẫu kiểm tra thường gặp


Công dụngMẫuMô tảVí dụ khớp
Địa chỉ email^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$Kiểm tra hình thức thông thường của một địa chỉ email.user@example.com
Số điện thoại (Mỹ)^\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}$Khớp với số mười chữ số, có hay không có dấu gạch nối, khoảng trắng hoặc dấu ngoặc.123-456-7890
Mã bưu chính (Mỹ)^\d{5}(-\d{4})?$Khớp với mã bưu chính năm và chín chữ số.90210-1234
Ngày (YYYY-MM-DD)^\d{4}-\d{2}-\d{2}$Khớp với định dạng ngày đơn giản chỉ gồm chữ số.2026-09-16
Địa chỉ IP (IPv4)^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$Khớp với hình thức của địa chỉ IPv4, không kiểm tra mỗi phần có nằm trong khoảng 0 đến 255 hay không.192.168.1.1

Những mẫu này kiểm tra hình thức của một giá trị, chứ không phải nó có thật hay không. Một địa chỉ có thể khớp hoàn hảo với mẫu email mà vẫn không tới nơi, nên hãy dùng chúng để bắt lỗi gõ sai từ sớm, đừng bao giờ coi là cách kiểm tra duy nhất.

Công cụ này cung cấp những gì


Một bảng tra cứu gọn các ký hiệu biểu thức chính quy, một cách tách mẫu thành những câu thông thường, và một chỗ thử cho thấy mẫu khớp với những gì trong văn bản của chính bạn.

Khi nào nên dùng


Dùng khi bạn viết một mẫu, khi đọc mẫu của người khác, hoặc khi giảng những điều cơ bản về regex cho đồng nghiệp. Đọc to mẫu ra, từng mảnh một, thường chính là điều khiến mọi thứ sáng tỏ.

Giới hạn


Phần tách mẫu theo biểu thức chính quy của JavaScript, vì đó là thứ trình duyệt của bạn chạy. Các phương ngữ khác có khác biệt: PCRE, Python, Java và .NET đều thêm cú pháp riêng, còn các công cụ POSIX như grep và sed dùng cú pháp cũ hơn và nhỏ hơn. Phần thử chạy mẫu của bạn trong một luồng riêng và dừng nó sau vài giây, nên một mẫu quay lui mãi không thể làm đơ trang.

Cách dùng bảng tra cứu


Tìm một ký hiệu, hoặc dán một mẫu rồi đọc từng phần một.

  1. Lướt qua hoặc tìm trong danh sách ký hiệu.
  2. Dán một mẫu để thấy nó được chia thành các phần.
  3. Nhập văn bản mẫu để thấy thực sự những gì khớp, rồi chỉnh lại mẫu.

Câu hỏi thường gặp


Công cụ này có gửi mẫu của tôi đi đâu không?
Không. Cả việc tách mẫu lẫn việc tìm kết quả khớp đều chạy trong trình duyệt của bạn, và cả mẫu lẫn văn bản đều không được gửi đi đâu cả.

Công cụ theo phương ngữ regex nào?
Phương ngữ JavaScript, vì đó là bộ máy làm việc. Phần lớn những gì ở đây — lớp ký tự, nhóm, lượng từ, mỏ neo — đều giống nhau ở mọi phương ngữ.

Tôi có thể thử mẫu của mình ở đây không?
Được. Nhập văn bản vào ô thử, các kết quả khớp sẽ được tô sáng, kèm theo những nhóm đã bắt được của từng kết quả.

Vì sao mẫu của tôi bị dừng?
Một số mẫu tốn thời gian theo cấp số nhân với văn bản gần khớp — nguyên nhân thường gặp là một lượng từ nằm trong một lượng từ khác, như (a+)+b. Phần thử bỏ cuộc sau vài giây thay vì làm đơ trang, và chính việc dừng đó đã là một lời cảnh báo hữu ích: cũng mẫu ấy sẽ làm nghẽn một máy chủ.

Wikipedia — Regular expression
Wikipedia — PCRE
Wikipedia — Finite-state machine
Wikipedia — ReDoS
Wikipedia — Backtracking