Văn bản
Regex Tester / Find & Replace
Kiểm tra biểu thức chính quy trên văn bản thực: các kết quả khớp được đánh dấu và các nhóm bắt được phân tích, hoặc thay thế các kết quả khớp tìm thấy bằng văn bản mới.
A regular expression (regex) is a compact language for describing patterns in text — for searching, validating a format, or replacing matches. This tool highlights matches in real text as you type the pattern, breaks out capture groups, and supports a find-and-replace mode.
How to use it
- Search: enter a pattern and some test text — every match is highlighted and capture groups are broken out separately.
- Replace: switch to Replace mode, provide a replacement template (referencing groups with $1, $2), and see the result instantly.
- Flags (g, i, m, s) toggle independently and immediately affect how many matches are found and how.
Common uses
- Building and debugging a regex before pasting it into code — you see the result without running the program.
- Bulk find-and-replace against a pattern (e.g. reformatting phone numbers or dates).
- Validating an input format (email, card number, slug) against real examples.
Things to keep in mind
Greedy quantifiers (*, +) grab as many characters as possible — add ? for the minimal match instead (e.g. .*? instead of .*).
Syntax varies slightly between languages — an expression that works here (a JavaScript engine) may need adjusting for PCRE, .NET, or Python.
Bài viết về công cụ này: Biểu thức chính quy: cú pháp cơ bản và các mẫu thường gặp
Câu hỏi thường gặp
Công cụ regex nào được sử dụng?
Công cụ sử dụng công cụ regex của JavaScript, không phải PCRE, vì vậy một số cú pháp đặc thù của PCRE (như khẳng định đệ quy hoặc một số chế độ khớp possessive) sẽ không hoạt động ở đây; các cờ phổ biến như g, i, m, s và u được hỗ trợ.
Sự khác biệt giữa định lượng tham lam và lười biếng, và giữa Test và Replace là gì?
Định lượng tham lam như * hoặc + bắt càng nhiều văn bản càng tốt, trong khi phiên bản lười biếng (*?, +?) dừng càng sớm càng tốt; về chế độ, Test đánh dấu các kết quả khớp và liệt kê các nhóm bắt (bao gồm cả nhóm được đặt tên), còn Replace áp dụng văn bản thay thế, với các tham chiếu như $1, cho mỗi kết quả khớp.
Văn bản và biểu thức của tôi có được gửi đến máy chủ không?
Không, việc đánh giá biểu thức chính quy diễn ra hoàn toàn phía client trong trình duyệt của bạn, không có gì được gửi trực tuyến.
Backtracking thảm khốc là gì?
Các định lượng lồng nhau như (a+)+ có thể, với một số chuỗi đầu vào nhất định, buộc công cụ regex phải thử một số lượng tổ hợp tăng theo cấp số nhân — trang web hay script bị "treo" trên một biểu thức tưởng như đơn giản. Đây là một loại lỗ hổng thực sự (ReDoS), vì vậy các định lượng lồng nhau phức tạp nên được kiểm thử trên các chuỗi dài gần khớp.
Vì sao biểu thức của tôi hoạt động ở ngôn ngữ lập trình này nhưng không hoạt động ở ngôn ngữ khác?
Cú pháp regex không hoàn toàn được chuẩn hóa: PCRE (PHP và nhiều ngôn ngữ khác), .NET, Python re và JavaScript có những khác biệt nhỏ trong việc hỗ trợ một số cấu trúc nhất định (ví dụ như look-behind hay nhóm có tên) — biểu thức viết cho một công cụ không phải lúc nào cũng chạy được nguyên vẹn ở công cụ khác.