Kiểm thử Regex

Kiểm thử biểu thức chính quy với văn bản của bạn và xem mọi kết quả khớp kèm vị trí cùng nhóm bắt. Chuyển sang chế độ thay thế để viết lại văn bản, hoặc chế

🌍 Truy cập toàn cầu 🔒 Riêng tư hàng đầu ⚡ Chuyển đổi tức thì 💯 Không giới hạn
Advertisement

Gõ một mẫu, dán văn bản của bạn và xem mọi kết quả khớp được tô sáng kèm vị trí cùng các nhóm bắt. Chuyển sang chế độ thay thế để viết lại văn bản bằng một nội dung thay thế, hoặc chế độ trích xuất để lấy ra một nhóm bắt theo từng dòng - cách nhanh nhất để kiểm tra một mẫu trước khi đưa vào mã nguồn.

Công cụ dùng đúng biến thể biểu thức chính quy JavaScript mà trình duyệt sử dụng, nên kết quả trùng với kết quả bạn nhận được trong Node hay bảng điều khiển trình duyệt, kể cả nhóm có tên, lookahead và lượng tử lười. Các cờ cho khớp toàn cục, không phân biệt hoa thường, nhiều dòng, dot-all và unicode đều có sẵn, và một mẫu chạy loạn sẽ bị dừng thay vì làm đơ thẻ trình duyệt.

Cách kiểm thử biểu thức chính quy

1

Nhập mẫu và đặt các cờ

2

Dán văn bản dùng để kiểm thử

3

Đọc các kết quả khớp, hoặc dùng chế độ thay thế và trích xuất

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

Công cụ dùng biến thể regex nào?

JavaScript (ECMAScript), cùng engine với trình duyệt và Node.js của bạn. Mẫu viết cho PCRE, Python hay Java có thể cần chỉnh đôi chút - lượng tử chiếm hữu và đệ quy không thuộc biến thể này.

Vì sao mẫu của tôi bị treo hoặc dừng?

Đó là hiện tượng quay lui thảm khốc, thường do các lượng tử lồng nhau như (a+)+ gặp một chuỗi dài không khớp. Công cụ dừng sau một số vòng lặp cố định để bảo vệ thẻ trình duyệt; hãy đơn giản hoá mẫu hoặc neo nó lại.

Làm sao thay thế văn bản?

Chuyển sang chế độ thay thế và nhập nội dung thay thế. $1, $2 hay $<name> chèn các nhóm bắt, nên bạn có thể đổi định dạng ngày, hoán đổi trường hay dọn dẹp log.

Chế độ trích xuất làm gì?

Nó xuất ra một nhóm bắt mỗi dòng thay vì toàn bộ kết quả khớp - đúng thứ bạn cần khi lấy địa chỉ email, URL hay ID ra khỏi một khối văn bản.

Mẫu của tôi có xử lý được dấu xuống dòng không?

Chỉ khi bật cờ nhiều dòng hoặc dot-all. Mặc định dấu . không khớp với ký tự xuống dòng, và đây là lý do phổ biến khiến một mẫu chạy đúng trên một dòng nhưng hỏng với cả đoạn văn.

Văn bản của tôi có bị tải lên không?

Không, việc so khớp chạy cục bộ - rất hữu ích khi văn bản chứa dữ liệu log thật hoặc thông tin khách hàng.

Advertisement

Tổng quan nhanh

Đầu vàovăn bản
Nhiều tệp cùng lúcKhông
Chạy ở đâuNgay trong trình duyệt - tệp không bao giờ bị tải lên
Dùng được ngoại tuyếnCó — sau khi trang đã tải xong
GiáMiễn phí, không đăng ký, không hình mờ

Những chỗ việc chuyển đổi âm thầm hỏng

Phần lớn lỗi chuyển đổi không nằm ở cú pháp mà ở ý nghĩa. Một cột mã bưu chính trong CSV mất các số 0 đứng đầu ngay khi bảng tính đoán rằng đó là số; một ID dài vượt quá độ chính xác của số dấu phẩy động; ngày tháng đổi nghĩa tuỳ theo nó được viết theo kiểu ngày trước hay tháng trước. Các khoá JSON không có thứ tự nhưng mảng thì có, và một công cụ sắp xếp khoá thì không đổi gì, còn công cụ sắp xếp mảng thì đổi dữ liệu. Unicode là một cái bẫy khác: văn bản có thể đến dưới dạng UTF-8, UTF-16 hoặc kèm dấu thứ tự byte, và một bộ giải mã đoán sai sẽ biến các ký tự có dấu thành chữ hỏng. Trước khi tin vào bất kỳ phép chuyển đổi nào, hãy kiểm tra nhanh hàng đầu và hàng cuối, mọi trường có số 0 đứng đầu, và mọi trường chứa dấu ngoặc kép, dấu phẩy hay ký tự xuống dòng.

Chọn một định dạng dữ liệu

JSON là mặc định cho mọi thứ một API trả về hoặc một chương trình đọc vào: nó xử lý cấu trúc lồng nhau, số, giá trị boolean và null một cách tự nhiên, và ngôn ngữ nào cũng phân tích được nó. CSV nhỏ hơn và mở thẳng vào bảng tính, nhưng nó không có cách nào diễn tả cấu trúc lồng nhau và không có tiêu chuẩn chung cho ký tự phân tách, cách đặt ngoặc kép hay bộ ký tự - đó chính là chỗ các phép chuyển đổi hay sai. XML dài dòng nhưng mang được thuộc tính, nội dung hỗn hợp và lược đồ, nên nó vẫn chiếm ưu thế trong các định dạng tài liệu và những hệ thống tích hợp cũ. YAML dễ đọc nhất cho phần cấu hình nhưng rất nhạy với dấu cách và có những cách ép kiểu gây bất ngờ ("no" thành false, một phiên bản như 1.10 thành 1.1). Hãy chọn định dạng mà công cụ tiếp nhận ưa dùng, chứ không phải định dạng trông đẹp nhất.