Kiểm tra regex
Thử một biểu thức chính quy trên văn bản mẫu và xem mọi kết quả khớp, các nhóm bắt của chúng và kết quả của phép thay thế.
Chạy hoàn toàn trong trình duyệt của bạn
| # | Vị trí | Kết quả khớp | Nhóm |
|---|
Cú pháp regex JavaScript (ECMAScript) theo mức trình duyệt của bạn hỗ trợ. Văn bản tối đa 5 MB; 1.000 kết quả khớp đầu tiên được liệt kê và làm nổi bật. Mẫu chạy quá 2 giây sẽ bị dừng.
Cách kiểm tra một biểu thức chính quy
- Nhập mẫu giữa hai dấu gạch chéo và đánh dấu các cờ bạn cần, như
gđể lấy mọi kết quả khớp hoặciđể bỏ qua hoa thường. - Dán văn bản kiểm thử của bạn. Kết quả khớp được làm nổi bật khi bạn gõ, và bảng liệt kê từng kết quả khớp với vị trí và các nhóm bắt của nó.
- Để kiểm tra phép thay thế, nhập một chuỗi thay thế như
$2-$1hoặc$<year>và xem kết quả bên dưới.
Kiểm tra mẫu một cách an toàn
Công cụ dựng một RegExp JavaScript từ mẫu và các cờ của bạn rồi chạy trong một worker nền, cùng engine mà mã của bạn sẽ dùng trong trình duyệt này. Kết quả khớp trả về cùng vị trí bắt đầu và mọi nhóm bắt, và trang vẽ chúng lên văn bản của bạn bằng các màu làm nổi bật xen kẽ để các kết quả khớp liền kề vẫn phân biệt được. Một kết quả khớp rỗng, như kết quả \b hoặc a* có thể tạo ra, hiện thành một thanh mảnh.
Chạy mẫu trong worker rất quan trọng vì một biểu thức chính quy có thể tốn thời gian theo hàm mũ. Nếu mẫu vẫn chạy sau 2 giây, worker bị dừng và bạn nhận một thông báo thay vì một thẻ bị treo. Cơ chế bảo vệ tương tự cũng áp dụng cho Tìm và thay thế.
Vị trí được đếm theo đơn vị mã UTF-16, đúng cách chuỗi JavaScript đếm: một emoji hay ký tự khác nằm ngoài mặt phẳng cơ bản chiếm hai đơn vị. Danh sách hiển thị 1.000 kết quả khớp đầu tiên; tổng số ở phía trên bao gồm mọi kết quả khớp.
Mẹo
- Khi một mẫu đã chạy tốt, hãy áp dụng nó cho cả tài liệu bằng Tìm và thay thế.
- So sánh văn bản trước và sau khi thay thế bằng So sánh văn bản.
- Khớp ngày tháng trong log? Chuyển timestamp thành giờ dễ đọc bằng Chuyển đổi Unix timestamp.
Câu hỏi thường gặp
Công cụ này dùng loại regex nào?
Loại của JavaScript, chạy bằng engine trong chính trình duyệt của bạn, nên kết quả đúng như những gì RegExp trong trình duyệt hoặc Node.js cho ra. Phần lớn cú pháp thông dụng giống với PCRE, Python và Java, nhưng một số tính năng khác biệt: possessive quantifier và atomic group không được hỗ trợ, còn lookbehind, nhóm đặt tên và cờ v cần trình duyệt hiện đại.
Vì sao chỉ hiện một kết quả khớp?
Không có cờ g (global), regex JavaScript chỉ tìm kết quả khớp đầu tiên, và phép thay thế chỉ đổi lần xuất hiện đầu tiên. Hãy đánh dấu g để tìm tất cả. Công cụ theo sát ngôn ngữ nên những gì bạn thấy là những gì mã của bạn sẽ làm.
Các cờ có tác dụng gì?
g tìm mọi kết quả khớp, i bỏ qua hoa thường, m làm ^ và $ khớp ở các dấu xuống dòng, s cho phép . khớp dấu xuống dòng, u bật xử lý Unicode đầy đủ, v là chế độ Unicode mới hơn có các phép toán tập hợp, y (sticky) chỉ khớp tại vị trí hiện tại, và d ghi lại điểm bắt đầu của mỗi nhóm, mà công cụ vẫn dùng để lấy vị trí nhóm.
Làm sao dùng nhóm trong chuỗi thay thế?
$1, $2 và tiếp theo chèn các nhóm theo số, $<name> chèn một nhóm đặt tên, $& chèn toàn bộ kết quả khớp, $` và $' chèn phần văn bản trước và sau nó, còn $$ viết một dấu đô la nguyên văn.
Vì sao mẫu của tôi dừng với thông báo "took too long"?
Một số mẫu, như ^(a+)+$ trên một chuỗi dài chữ a không kết thúc như nó mong đợi, khiến engine thử một số lượng khổng lồ cách khớp. Hiện tượng này gọi là catastrophic backtracking. Công cụ chạy mỗi mẫu trong một worker nền và dừng nó sau 2 giây để trang vẫn dùng được. Hãy viết lại các lặp lồng nhau như (a+)+ thành a+.
Văn bản của tôi có bị gửi đi đâu không?
Không. Mẫu và văn bản ở lại trong trình duyệt của bạn; việc khớp diễn ra trên thiết bị của bạn và không có gì được tải lên hay lưu trữ.