Chuyển đến nội dung

Trình Kiểm Tra & Xác Thực Regex Trực Tuyến Miễn Phí - Kiểm Tra Mẫu Ngay Lập Tức

Kiểm tra và xác thực biểu thức chính quy trực tuyến với chế độ tô sáng thời gian thực. Trình kiểm tra mẫu regex miễn phí với xác thực cú pháp, kết quả khớp và chức năng lưu. Kiểm tra regex ngay bây giờ!

Trình Kiểm Tra Mẫu Regex

Kết Quả Khớp

Nhập mẫu và văn bản kiểm tra để xem kết quả

Lưu Mẫu

Các Mẫu Đã Lưu

Chưa có mẫu nào được lưu

Hướng Dẫn Ký Hiệu Regex

.Khớp bất kỳ ký tự nào ngoại trừ dòng mới
\dKhớp bất kỳ chữ số nào (0-9)
\DKhớp bất kỳ ký tự không phải chữ số
\wKhớp bất kỳ ký tự từ (a-z, A-Z, 0-9, _)
\WKhớp bất kỳ ký tự không phải từ
\sKhớp bất kỳ ký tự khoảng trắng
\SKhớp bất kỳ ký tự không phải khoảng trắng
^Khớp đầu dòng
$Khớp cuối dòng
*Khớp 0 hoặc nhiều ký tự trước đó
+Khớp 1 hoặc nhiều ký tự trước đó
?Khớp 0 hoặc 1 ký tự trước đó
{n}Khớp chính xác n ký tự trước đó
{n,}Khớp ít nhất n ký tự trước đó
{n,m}Khớp giữa n và m ký tự trước đó
[abc]Khớp bất kỳ ký tự nào trong ngoặc vuông
[^abc]Khớp bất kỳ ký tự nào không có trong ngoặc vuông
(abc)Nhóm nhiều token lại và bắt giữ kết quả khớp
a|bKhớp hoặc a hoặc b
\bKhớp vị trí ranh giới từ
Máy tính tải...
📚

Tài liệu hướng dẫn

Trình kiểm thử regex là gì

Trình kiểm thử regex là công cụ kiểm tra một biểu thức chính quy với một đoạn văn bản và hiển thị phần văn bản mà biểu thức khớp. Biểu thức chính quy, hay regex, là một chuỗi ký tự ngắn mô tả một mẫu trong văn bản, chẳng hạn như “ba chữ số liên tiếp” hoặc “bất kỳ từ nào bắt đầu bằng chữ cái viết hoa”. Trình xác thực regex này cho phép người dùng nhập một mẫu và một đoạn văn bản kiểm thử, sau đó thấy ngay các phần khớp được tô sáng mà không cần viết mã.

Biểu thức chính quy được dùng trong nhiều ngôn ngữ lập trình để tìm kiếm văn bản, kiểm tra dữ liệu nhập có đúng định dạng hay không và trích xuất các phần cụ thể từ một khối văn bản lớn hơn. Cú pháp của chúng ngắn gọn nhưng dễ viết sai, vì vậy kiểm thử mẫu trước khi dùng trong chương trình giúp phát hiện lỗi sớm.

Cách kiểm thử biểu thức chính quy trực tuyến

  1. Nhập mẫu. Nhập regex vào trường mẫu. Công cụ kiểm tra cú pháp khi người dùng nhập và hiển thị thông báo lỗi nếu mẫu không hợp lệ, chẳng hạn khi dấu ngoặc vuông hoặc ngoặc tròn chưa được đóng.
  2. Chọn cờ. Cờ thay đổi cách áp dụng mẫu (xem bên dưới).
  3. Nhập văn bản kiểm thử. Nhập hoặc dán văn bản cần tìm kiếm vào hộp văn bản kiểm thử.
  4. Đọc kết quả. Các phần khớp được tô sáng trong văn bản và công cụ cho biết số lượng phần khớp tìm thấy. Nếu có văn bản kiểm thử, công cụ cũng cho biết mẫu có khớp với toàn bộ văn bản từ đầu đến cuối hay chỉ khớp với một phần.
  5. Lưu mẫu. Có thể lưu một mẫu kèm nhãn ngắn để dùng lại sau này. Các mẫu đã lưu được giữ trong trình duyệt, không phải trên máy chủ, nên chỉ xuất hiện trên cùng thiết bị và trình duyệt.
  6. Sao chép kết quả. Văn bản khớp hoặc chính mẫu có thể được sao chép vào bảng tạm chỉ bằng một lần nhấp.

Các cờ regex

Cờ là một chữ cái được thêm sau mẫu để thay đổi cách mẫu hoạt động. Công cụ này hỗ trợ bốn cờ, dùng riêng hoặc kết hợp:

CờTênTác động
gToàn cụcTìm mọi phần khớp trong văn bản thay vì dừng ở phần đầu tiên.
iKhông phân biệt chữ hoa chữ thườngBỏ qua sự khác biệt giữa chữ hoa và chữ thường.
mNhiều dòngKhiến ^ và $ khớp với đầu và cuối mỗi dòng, không chỉ đầu và cuối của toàn bộ văn bản. Cờ này thay đổi vị trí tìm thấy phần khớp, nhưng không thay đổi việc kiểm tra toàn bộ văn bản được mô tả bên dưới.
sDấu chấm khớp mọi ký tựKhiến . cũng khớp với ký tự xuống dòng.

Có thể kết hợp các cờ, chẳng hạn gi cho toàn cục và không phân biệt chữ hoa chữ thường, hoặc gms cho toàn cục, nhiều dòng và dấu chấm khớp mọi ký tự.

Cách công cụ tìm phần khớp

Bộ khớp luôn tìm mọi lần xuất hiện của mẫu trong văn bản. Vì vậy, việc đếm phần khớp hoạt động như thể cờ toàn cục luôn được bật, ngay cả khi không được chọn trong danh sách thả xuống. Mỗi phần khớp được ghi lại cùng vị trí và độ dài, sau đó văn bản gốc được tách thành các phần khớp và không khớp để có thể tô sáng các phần khớp.

Để kiểm tra mẫu có khớp với toàn bộ văn bản hay không, công cụ đặt mẫu trong một nhóm không bắt giữ và neo nó: ^(?:pattern)$. Việc nhóm rất quan trọng vì | (phép luân phiên) có độ ưu tiên thấp hơn các neo. Không có nhóm, mẫu như cat|dog được neo thành ^cat|dog$ thực sự có nghĩa là “bắt đầu bằng cat hoặc kết thúc bằng dog”, không giống với “toàn bộ văn bản là cat hoặc dog”.

Việc kiểm tra này cũng loại bỏ cờ nhiều dòng. Khi bật m, ^ và $ khớp tại mỗi chỗ xuống dòng, nên phép kiểm tra có neo sẽ trả lời “có dòng nào khớp không?” thay vì “toàn bộ văn bản có khớp không?”. Công cụ loại bỏ m cho lần kiểm tra này và giữ lại i cùng s, vì hai cờ đó thay đổi nội dung mẫu khớp chứ không thay đổi vị trí của các neo. Do đó, câu trả lời luôn đề cập đến toàn bộ văn bản, bao gồm cả các chỗ xuống dòng.

Ví dụ minh họa

Mẫu: \d+ (một hoặc nhiều chữ số), cờ: g, văn bản kiểm thử: Room 12 has 5 chairs.

  • Các phần khớp tìm thấy: 12 và 5, nên số lượng phần khớp là 2.
  • Kiểm tra toàn bộ văn bản: mẫu không khớp với toàn bộ văn bản vì văn bản còn chứa chữ cái và khoảng trắng.

Nếu đổi văn bản kiểm thử thành 12345, mẫu tương tự sẽ khớp với toàn bộ chuỗi, nên kiểm tra toàn bộ văn bản trả về đúng.

Tài liệu tham khảo cú pháp regex

Khớp ký tự

Ký hiệuÝ nghĩaVí dụKhớp
.Bất kỳ ký tự nào ngoại trừ ký tự xuống dònga.c“abc”, “adc”, “a1c”
\dBất kỳ chữ số nào, từ 0 đến 9\d{3}"123", "456"
\DBất kỳ ký tự nào không phải chữ số\D+“abc”, “xyz”
\wBất kỳ chữ cái, chữ số hoặc dấu gạch dưới nào\w+“abc123”, “test_123”
\WBất kỳ ký tự nào không phải chữ cái, chữ số hoặc dấu gạch dưới\W+"!@#"
\sBất kỳ ký tự khoảng trắng nàoa\sb“a b”
\SBất kỳ ký tự nào không phải khoảng trắng\S+“abc”

Neo vị trí

Ký hiệuÝ nghĩaVí dụKhớp
^Đầu dòng^abc“abc” ở đầu dòng
$Cuối dòngabc$“abc” ở cuối dòng
\bRanh giới từ\bword\b“word” dưới dạng một từ hoàn chỉnh

Bộ định lượng

Ký hiệuÝ nghĩaVí dụKhớp
*Không hoặc nhiều lần của phần tử đứng trướca*b“b”, “ab”, “aab”
+Một hoặc nhiều lần của phần tử đứng trướca+b“ab”, “aab”
?Không hoặc một lần của phần tử đứng trướccolou?r“color”, “colour”
{n}Chính xác n lần của phần tử đứng trướca{3}“aaa”
{n,}Ít nhất n lần của phần tử đứng trướca{2,}“aa”, “aaa”
{n,m}Từ n đến m lần của phần tử đứng trướca{2,4}“aa”, “aaa”, “aaaa”

Tập ký tự và nhóm

Ký hiệuÝ nghĩaVí dụKhớp
[abc]Bất kỳ một ký tự nào được liệt kê trong dấu ngoặc vuông[aeiou]bất kỳ một nguyên âm nào
[^abc]Bất kỳ ký tự nào không được liệt kê trong dấu ngoặc vuông[^aeiou]bất kỳ ký tự nào không phải nguyên âm
(abc)Nhóm các ký tự và bắt phần khớp(abc)+“abc”, “abcabc”
`a\b`Khớp với a hoặc b`cat\

Có thêm hai tính năng cần biết. Phép nhìn trước, được viết là a(?=b), khớp với “a” chỉ khi ngay sau đó là “b” nhưng không đưa “b” vào phần khớp. Phép nhìn sau, được viết là (?<=a)b, khớp với “b” chỉ khi nó nằm ngay sau “a”.

Các ví dụ mẫu phổ biến

Có thể dán các mẫu này vào công cụ để xem chúng hoạt động thế nào với văn bản mẫu.

Chỉ chữ số: ^\d+$ khớp với chuỗi chỉ gồm các chữ số, chẳng hạn “48210”, và loại bỏ mọi chuỗi có chữ cái hoặc khoảng trắng.

Địa chỉ email (kiểm tra cơ bản): ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ khớp với địa chỉ có dạng name@domain.tld, chẳng hạn “user@example.com”. Đây là phép kiểm tra đơn giản, không phải toàn bộ định dạng email do các tiêu chuẩn Internet quy định, nên một số địa chỉ hợp lệ nhưng khác thường sẽ không vượt qua phép kiểm tra.

Số điện thoại Hoa Kỳ: ^\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})$ khớp với các định dạng như “(123) 456-7890”, “123-456-7890” và “1234567890”.

Ngày theo định dạng YYYY-MM-DD: ^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$ kiểm tra tháng nằm trong khoảng từ 01 đến 12 và ngày nằm trong khoảng từ 01 đến 31. Phép kiểm tra không xác nhận ngày có hợp lệ với tháng cụ thể hay không, nên chấp nhận “2024-02-30” dù tháng Hai không bao giờ có 30 ngày.

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

Biểu thức chính quy là gì? Biểu thức chính quy là một chuỗi ký tự xác định một mẫu tìm kiếm. Nó được dùng để tìm kiếm, khớp và chỉnh sửa văn bản trong hầu hết ngôn ngữ lập trình và trình soạn thảo văn bản.

Cờ toàn cục có tác dụng gì? Không có cờ toàn cục, một lần tìm kiếm thường dừng sau phần khớp đầu tiên. Với cờ toàn cục (g), việc tìm kiếm tiếp tục và báo cáo mọi phần khớp trong văn bản. Công cụ này luôn tìm tất cả phần khớp khi đếm, bất kể cờ nào được chọn.

Làm thế nào để khớp một dấu chấm theo nghĩa đen hoặc ký tự đặc biệt khác? Đặt dấu gạch chéo ngược trước ký tự đó. Ví dụ, \. khớp với dấu chấm theo nghĩa đen thay vì “bất kỳ ký tự nào”, vốn là ý nghĩa của . không được thoát.

Sự khác biệt giữa .* và .*? là gì? .* là tham lam và khớp nhiều ký tự nhất có thể. .*? là lười và khớp ít ký tự nhất có thể mà vẫn cho phép phần còn lại của mẫu khớp thành công.

Tại sao công cụ nói văn bản không khớp hoàn toàn khi mọi dòng đều khớp? Phép kiểm tra toàn bộ văn bản xem văn bản là một chuỗi duy nhất, bao gồm cả các chỗ xuống dòng. Một mẫu như \d+ khớp riêng từng dòng 12 và 34, nhưng hai dòng cùng ký tự xuống dòng giữa chúng không chỉ gồm chữ số, nên kết quả kiểm tra toàn bộ văn bản là không. Để khớp văn bản trải dài nhiều dòng, mẫu cũng phải bao quát các chỗ xuống dòng, chẳng hạn dùng [\s\S]+.

Làm thế nào để kiểm tra toàn bộ chuỗi khớp với một mẫu, không chỉ một phần? Thêm ^ ở đầu và $ ở cuối mẫu, chẳng hạn ^[0-9]+$ cho một chuỗi chỉ gồm chữ số.

Trình kiểm thử này có tuân theo quy tắc regex của các ngôn ngữ lập trình khác không? Công cụ này sử dụng bộ máy biểu thức chính quy tích hợp trong JavaScript. Phần lớn cú pháp cốt lõi, như lớp ký tự và bộ định lượng, được dùng chung giữa các ngôn ngữ như Python, Java và Perl, nhưng một số chi tiết khác nhau, nên mẫu hoạt động ở đây không đảm bảo hoạt động giống hệt ở mọi nơi.

Tài liệu tham khảo

  1. "Regular expression." Wikipedia, Wikimedia Foundation. https://en.wikipedia.org/wiki/Regular_expression
  2. MDN Web Docs. "Regular expressions." Mozilla. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
  3. Friedl, J. E. F. (2006). Mastering Regular Expressions. O'Reilly Media.