Cách sử dụng
- Nhập biểu thức chính quy vào trường Pattern, không kèm dấu gạch chéo bao quanh.
- Bật các cờ bạn cần. g (toàn cục) tìm tất cả kết quả khớp thay vì chỉ tìm kết quả đầu tiên.
- Dán văn bản cần tìm kiếm. Các kết quả khớp được tô sáng và liệt kê kèm vị trí cùng các nhóm bắt được.
- Bạn có thể nhập chuỗi thay thế như $2-$1 để xem trước kết quả của String.replace.
Cách hoạt động
Công cụ kiểm tra chạy mẫu của bạn bằng đối tượng RegExp tích hợp trong trình duyệt, vì vậy kết quả chính xác là những gì mã JavaScript (ECMAScript) trong trình duyệt đó sẽ tạo ra. Các ngôn ngữ khác dùng những biến thể regex khác nhau: PCRE (PHP), mô-đun re của Python, Java và .NET hỗ trợ các tính năng mà JavaScript không có, chẳng hạn như lượng từ tham lam tối đa (a++), nhóm nguyên tử ((?>…)), bộ sửa đổi nội tuyến như (?i) và đệ quy; đồng thời chúng cũng có những khác biệt chi tiết như các neo \A và \Z. Hãy kiểm tra mẫu bằng chính ngôn ngữ bạn định dùng trước khi dựa vào kết quả. Lookbehind ((?<=…)), nhóm có tên ((?<name>…)) và biểu thức thoát thuộc tính Unicode (\p{L} với cờ u) hoạt động trên tất cả trình duyệt hiện nay.
Nếu không bật cờ g hoặc y, công cụ chỉ tìm kết quả khớp đầu tiên, giống như RegExp.exec. Các kết quả khớp có độ dài bằng 0, chẳng hạn với ^ hoặc \b, vẫn được liệt kê nhưng không được tô sáng; sau mỗi kết quả như vậy, việc tìm kiếm tiếp tục từ ký tự kế tiếp (mã điểm kế tiếp nếu bật cờ u), giống như String.matchAll. Các nhóm bắt được hiển thị theo số thứ tự và, nếu có, theo tên; nhóm không tham gia kết quả khớp được đánh dấu là không có giá trị, khác với kết quả khớp rỗng.
Một số mẫu, chẳng hạn (a+)+$ trên một dòng dài không có kết quả khớp, có thể mất thời gian theo cấp số nhân để thất bại (quay lui thảm họa). Để giảm rủi ro, công cụ bắt đầu tìm khớp một chút sau khi bạn ngừng nhập, chỉ tìm trong 100,000 ký tự đầu tiên của văn bản và thu thập tối đa 1,000 kết quả. Mẫu có hành vi bất thường vẫn có thể khiến thẻ trình duyệt không phản hồi trong chốc lát; nếu vậy, hãy đơn giản hóa mẫu hoặc rút ngắn văn bản.
Ví dụ
Trích xuất ngày tháng
Mẫu (\d{4})-(\d{2})-(\d{2}) với cờ g bật sẽ tìm được hai kết quả khớp trong “Due 2026-03-15, paid 2026-04-02”. Nhóm 1 là năm; chuỗi thay thế $3.$2.$1 sẽ đổi văn bản thành “Due 15.03.2026, paid 02.04.2026”.
Nhóm có tên giúp mã dễ đọc
Mẫu (?<key>\w+)=(?<value>[^&]*) trên chuỗi truy vấn a=1&b=two liệt kê key và value cho từng cặp, tương ứng với giá trị mà match.groups.key và match.groups.value trả về trong JavaScript.
Tìm kiếm không phân biệt chữ hoa chữ thường trên nhiều dòng
Mẫu ^error:.* với các cờ g, i và m tìm mọi dòng nhật ký bắt đầu bằng Error:, ERROR: hoặc error:, vì m khiến ^ khớp ở đầu mỗi dòng.
Câu hỏi thường gặp
Regex của tôi có hoạt động giống nhau trong Python, PHP hoặc Java không?
Không hẳn. Công cụ này dùng bộ máy JavaScript. Các cú pháp cơ bản tương đồng, nhưng một số tính năng như lượng từ tham lam tối đa, nhóm nguyên tử, cờ nội tuyến như (?i) và một số chuỗi thoát chỉ có trong các biến thể khác; một vài tính năng cũng hoạt động khác nhau. Luôn kiểm tra bằng ngôn ngữ đích.
Vì sao chỉ tìm thấy một kết quả khớp?
Cờ g (toàn cục) đang tắt. Khi không bật cờ này, JavaScript chỉ trả về kết quả khớp đầu tiên. Bật g để tìm tất cả kết quả.
Tôi có cần nhập dấu gạch chéo bao quanh mẫu không?
Không. Chỉ nhập mẫu, chẳng hạn \d+ thay vì /\d+/g, rồi chọn cờ bằng các ô đánh dấu. Dạng literal JavaScript được hiển thị bên dưới kết quả để bạn sao chép vào mã.
Vì sao trang chạy chậm với mẫu của tôi?
Các lượng từ lồng nhau như (a+)+ hoặc (.*)* có thể buộc bộ máy thử số lượng đường đi tăng theo cấp số nhân khi không có kết quả khớp. Hãy làm mẫu cụ thể hơn, chẳng hạn thay .* bằng [^,]*, hoặc dùng các neo. Công cụ giới hạn văn bản ở 100,000 ký tự để giảm tác động.
Quyền riêng tư
Mẫu và văn bản của bạn chỉ được xử lý trong trình duyệt bằng bộ máy JavaScript. Không có dữ liệu nào được tải lên, lưu trữ hoặc đưa vào số liệu phân tích.