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

Common uses

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.

Bài viết: Văn bản

Case Converter: vì sao có các kiểu đặt tên khác nhau

Vì sao trong một dự án, biến được viết camelCase nhưng tệp lại kebab-case, và những quy tắc này đến từ đâu.

Text Diff: thuật toán tìm sự khác biệt giữa hai văn bản như thế nào

Thuật toán diff tìm tập hợp thay đổi tối thiểu giữa hai phiên bản văn bản như thế nào.

Sắp xếp và loại bỏ dòng trùng lặp: dùng để làm gì

Vì sao sắp xếp theo số đặt "10" trước "9" là một lỗi, và cách tránh điều đó.

String Escape: vì sao cùng một văn bản cần escape khác nhau

Vì sao cùng một dấu ngoặc kép lại được escape khác nhau trong chuỗi JS, JSON và lệnh shell.

CRLF so với LF: vì sao ký tự cuối dòng vẫn còn quan trọng

Vì sao một tệp được viết trên Windows có thể hiển thị là "toàn bộ đã thay đổi" trong git trên Linux.

Đếm ký tự và từ: vì sao không phải lúc nào cũng đơn giản

Vì sao một emoji hoặc chữ có dấu có thể được tính là nhiều ký tự cùng lúc.

Lorem Ipsum: văn bản giữ chỗ đến từ đâu và dùng để làm gì

Vì sao các nhà thiết kế cố tình dùng văn bản "vô nghĩa" thay vì nội dung thật trong bản phác thảo.

Slugify: cách biến bất kỳ văn bản nào thành URL

Một tiêu đề như "Xin chào, Thế giới! Bạn khỏe không?" biến thành chuỗi tương thích URL như xin-chao-the-gioi-ban-khoe-khong ra sao.

Markdown: vì sao cú pháp văn bản đơn giản đánh bại trình soạn thảo phức tạp

Vì sao lập trình viên chọn viết tài liệu bằng Markdown thay vì trình soạn thảo văn bản định dạng phong phú.

Khoảng trắng và ký tự vô hình: nguyên nhân ẩn giấu của các lỗi kỳ lạ

Vì sao hai chuỗi trông giống hệt nhau có thể không khớp do một ký tự vô hình.

Text Reverse: vì sao "đảo ngược văn bản" khó hơn tưởng tượng

Vì sao đảo ngược chuỗi ngây thơ có thể biến một emoji thành các byte không sử dụng được.

Phân tích tần suất văn bản: vì sao cần đếm số lần từ lặp lại

Tần suất chữ cái trong văn bản mã hóa giúp phá vỡ các mật mã thay thế đơn giản nhất như thế nào.