Không tải lên, 100% cục bộ, không cần tài khoản

Hướng dẫn cách làm

Cách kiểm tra regex mà không cần cài đặt gì

Bạn vừa viết một mẫu và cần biết liệu nó có thực sự khớp với những gì bạn mong đợi trước khi đưa vào mã hay không. Cài một công cụ trên máy hoặc dán một nhật ký riêng tư vào một trang web bất kỳ là quá mức cần thiết, và thường rủi ro. Hướng dẫn này cho biết cách chạy regex trên chính văn bản của bạn ngay trong trình duyệt, bật tắt các cờ làm thay đổi hành vi, đọc các nhóm bắt mà nó trích ra, và xem các kết quả khớp được tô sáng tại chỗ, trong khi mẫu và văn bản không bao giờ rời khỏi tab của bạn.

Từng bước

  1. Mở công cụ kiểm tra regex và gõ mẫu của bạn vào ô nằm giữa hai dấu gạch chéo. Bạn không tự viết dấu gạch chéo: công cụ hiển thị chúng để bạn thấy mẫu theo cách mà bộ máy đọc nó. Dán văn bản mẫu của bạn vào ô bên dưới, ví dụ vài dòng nhật ký, một danh sách email hay một khối mã mà bạn muốn tìm kiếm.
    Một mẫu regex và một chuỗi cờ được nhập trong công cụ kiểm tra, với văn bản mẫu dán vào ô bên dưới
  2. Đặt các cờ trong ô nhỏ bên cạnh mẫu. Cờ g tìm mọi kết quả khớp thay vì dừng ở kết quả đầu tiên; i làm cho việc khớp không phân biệt hoa thường; m cho phép các neo ^ và $ khớp với đầu và cuối mỗi dòng thay vì toàn bộ văn bản; s cho phép dấu chấm khớp cả ngắt dòng. Hãy kết hợp chúng tự do, ví dụ gim.
  3. Nhấn Test. Mỗi kết quả khớp được tô sáng trực tiếp trong văn bản của bạn, và danh sách bên dưới hiển thị mọi kết quả khớp cùng vị trí và giá trị của từng nhóm bắt. Tinh chỉnh mẫu rồi chạy lại: bản xem trước cập nhật để bạn thu hẹp mẫu cho đến khi nó bắt đúng chính xác điều bạn muốn và không gì khác.
    Kết quả kiểm tra: các kết quả khớp được tô sáng tại chỗ và một danh sách hiển thị vị trí mỗi kết quả khớp cùng các nhóm bắt của nó

Nhóm bắt, có tên và đánh số

Nhóm bắt là phần của mẫu được bọc trong dấu ngoặc đơn, và đó là cách bạn lấy ra một mảnh từ mỗi kết quả khớp thay vì chỉ xác nhận rằng toàn bộ đã khớp. Nhóm đánh số được đếm từ trái sang phải theo dấu ngoặc mở của chúng: trong (\d{4})-(\d{2})-(\d{2}) nhóm 1 là năm, nhóm 2 là tháng, nhóm 3 là ngày. Nhóm có tên dùng cú pháp (?<name>...), nên (?<year>\d{4}) dễ đọc hơn nhiều so với một con số trần khi mẫu lớn dần. Nếu bạn chỉ muốn gom nhóm mà không bắt, ví dụ để áp một bộ lượng từ lên nhiều ký tự, hãy dùng nhóm không bắt (?:...) để nó không làm rối danh sách kết quả. Công cụ kiểm tra hiển thị giá trị của từng nhóm cho mỗi kết quả khớp, đây là cách nhanh nhất để xác nhận bạn đang trích đúng phần.

Khi một mẫu treo hoặc chạy sai

Có hai vấn đề lặp đi lặp lại. Thứ nhất là quay lui thảm họa: một mẫu như (a+)+$ chạy trên một chuỗi dài không khớp có thể khiến bộ máy thử một số lượng đường đi theo cấp số nhân và đóng băng. Công cụ kiểm tra chạy mỗi lần thử trong một Web Worker với bộ canh giờ ngắn, nên thay vì một tab treo, bạn nhận được một thông báo rõ ràng và có thể đơn giản hóa mẫu, thường bằng cách làm cho một bộ lượng từ mang tính chiếm hữu về tinh thần, neo nó lại, hoặc tránh lặp lồng nhau. Thứ hai là khớp tham lam so với khớp lười: theo mặc định .* lấy nhiều nhất có thể, nên để khớp nội dung của một thẻ HTML đơn lẻ bạn muốn dạng lười .*? thay thế. Nếu bạn đang so sánh hai phiên bản hơi khác nhau của một chuỗi để xem mẫu của bạn nên nhắm vào đâu, công cụ so sánh văn bản xếp chúng cạnh nhau để khác biệt trở nên rõ ràng trước khi bạn viết biểu thức.

Cách trình duyệt đánh giá regex của bạn

Các trình duyệt hiện đại cài sẵn engine regex ECMAScript hỗ trợ bộ cờ đầy đủ: khớp không phân biệt chữ hoa thường (i), chế độ multiline (m), dotAll (s), Unicode (u) và cờ sticky (y). Khi bạn gõ một mẫu vào bộ kiểm tra, engine biên dịch nó thành NFA nội bộ và đánh giá nó dựa trên chuỗi kiểm tra của bạn theo thời gian thực, báo cáo mọi vị trí khớp và bất kỳ nhóm bắt nào. Backtracking xảy ra cục bộ trên CPU của bạn: một mẫu như (a+)+ trên chuỗi không khớp dài có thể chạy trong vài giây, và nhìn thấy sự dừng đó trong trình duyệt là phản hồi hữu ích trước khi triển khai mẫu trong mã sản xuất. Không có văn bản nào rời trang, vì vậy bạn có thể dán mẫu log hoặc bất kỳ đầu vào nào mà không cần định tuyến qua máy chủ bên thứ ba.

Các công cụ dùng trong hướng dẫn này

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

Mẫu hoặc văn bản kiểm tra của tôi có bị gửi tới máy chủ không?

Không. Regex chạy bên trong một Web Worker ngay trong trình duyệt của bạn, nên mẫu và văn bản bạn kiểm tra vẫn ở trong tab. Điều này quan trọng vì văn bản bạn dán thường là một nhật ký thật, một danh sách khách hàng hay một cấu hình nội bộ, đúng loại dữ liệu mà bạn không muốn đặt trên máy chủ của người khác. Mở bảng Network trong công cụ dành cho nhà phát triển khi bạn nhấn Test và bạn sẽ không thấy yêu cầu nào mang văn bản của bạn ra ngoài. Nó cũng tiếp tục hoạt động khi ngoại tuyến một khi trang đã tải xong.

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

Nó dùng bộ máy biểu thức chính quy của JavaScript tích hợp sẵn trong trình duyệt của bạn, chính bộ máy chạy trong Node.js và trong mọi trang web. Nó bao gồm cú pháp thông dụng: lớp ký tự, bộ lượng từ, neo, phép thay thế, nhóm bắt đánh số và có tên, nhìn trước và nhìn sau. Một vài tính năng từ các biến thể khác, chẳng hạn đệ quy kiểu Perl hay bộ lượng từ chiếm hữu, không nằm trong bộ máy JavaScript, nên nếu một mẫu bạn sao chép từ một dự án PHP hay Python hoạt động khác đi, thì khác biệt về biến thể đó thường là lý do.

Nguồn