Kiểm thử Regex

Viết mẫu và xem mọi kết quả khớp được làm nổi bật trong ngữ cảnh — không cần nút bấm, engine chính là JavaScript RegExp của trình duyệt.

Cách sử dụng

  1. Nhập mẫu không kèm dấu gạch chéo và bật các cờ bạn cần: kết quả cập nhật ngay khi nhập, không có nút nào để bấm.
  2. Dán văn bản cần thử. Mọi kết quả khớp được làm nổi bật trong bảng kết quả, và từng kết quả được liệt kê kèm vị trí, đoạn văn bản và các nhóm bắt.
  3. Sao chép tất cả giá trị khớp một lần, hoặc tải xuống thành tệp văn bản — mỗi dòng một kết quả.

Ví dụ

Mẫu và văn bản

(\w+)@(\w+)\.(\w+)

Liên hệ mai@example.com hoặc lan@example.org để biết chi tiết.

Kết quả khớp

Số kết quả khớp: 2
#1 [8–23] mai@example.com
   1: mai  2: example  3: com
#2 [27–42] lan@example.org
   1: lan  2: example  3: org

Dòng đầu là mẫu (không cần dấu gạch chéo), phần còn lại là văn bản thử. Các khoảng là độ lệch tính từ 0, không gồm điểm cuối, trong văn bản — đúng những con số JavaScript trả về trong match.index. So khớp toàn cục luôn bật, nên mọi lần xuất hiện đều được tìm dù không có công tắc g.

Quy tắc, giới hạn và các vấn đề đã biết

  • Engine là JavaScript RegExp của chính trình duyệt: không có PCRE, Python, Go hay RE2, và không có bộ chọn biến thể. \A, \z cùng cờ nội tuyến như (?i) không được hỗ trợ.
  • So khớp toàn cục luôn bật; cờ chỉ có i, m, s và u. y (dính), d (chỉ số) và v (tập Unicode) không được cung cấp.
  • Dấu /…/ chỉ để trang trí: dấu / bên trong mẫu không cần escape ở đây, khác với literal JavaScript. Dòng hiển thị cờ bên cạnh chính là chuỗi để dùng lại trong mã.
  • Lỗi cú pháp hiện thông báo của chính trình duyệt (bằng tiếng Anh) sau một tiền tố đã bản địa hóa; cách diễn đạt khác nhau giữa các trình duyệt.
  • Văn bản thử rỗng không cho kết quả — không có dòng nào để thử, nên các mẫu như ^$ không thể kiểm chứng ở đây.
  • Thu thập tối đa 2000 kết quả khớp (khi đó số đếm hiện 2000+) và danh sách hiển thị 200 kết quả đầu. Cả hai giới hạn đều được thông báo chứ không lặng lẽ cắt bớt.
  • Văn bản trên 100.000 ký tự vẫn cập nhật khi nhập, với độ trễ lâu hơn trước khi kết quả hiện ra.
  • Backtracking thảm họa có thể làm treo tab: regex JavaScript chạy đồng bộ và không thể ngắt, nên không có timeout. Đừng dán mẫu hoặc văn bản khổng lồ không tin cậy.
  • \w, \b và \d chỉ tính ASCII kể cả khi có u — hãy khớp chữ Hán hay chữ Ả Rập bằng \p{L} và cờ u. Không có u, \p{L} không báo lỗi: nó lặng lẽ thoái hóa thành khớp nguyên văn.
  • i dùng cách gấp chữ hoa thường Unicode đơn giản, không theo quy tắc ngôn ngữ: İ và i trong tiếng Thổ Nhĩ Kỳ không khớp nhau, và ß không gộp thành SS.
  • Các khoảng là độ lệch UTF-16 từ 0, không gồm điểm cuối, nên một emoji tính là hai. Nhóm không tham gia được hiện là —; nhóm khớp chuỗi rỗng hiện trống.
  • Kết quả khớp độ dài bằng 0 (\b, a*, (?=x)) hiện bằng dấu mảnh và khoảng của chúng đọc là n–n.
  • Sao chép và tải xuống chỉ liệt kê giá trị khớp, mỗi dòng một giá trị, không có số thứ tự, khoảng hay nhóm. Vì vậy kết quả khớp chứa xuống dòng sẽ trải trên nhiều dòng.
  • Không xem trước thay thế, không tạo mã, không liên kết cố định và không lưu mẫu: mẫu không bao giờ rời khỏi ô nhập và không bao giờ vào URL.

Khi mẫu đã chạy đúng, đây là những bước thường làm tiếp.