Trình kiểm tra Regex
Văn bản khớp mẫu biểu thức chính quy để xác thực, thay thế tìm kiếm và phân tích cú pháp nhật ký. Kiểm tra các mẫu bằng tính năng đánh dấu trực tiếp trước khi đưa vào mã sản xuất — tránh việc quay lui bất ngờ thảm khốc khi người dùng nhập.
Mẫu (pattern)
Cờ (flags)
Văn bản kiểm thử
Đầu ra
[0] Hello
[6] world
[12] 123
Cách kiểm tra biểu thức chính quy
1. Nhập mẫu biểu thức chính quy (không có dấu gạch chéo bên ngoài hoặc có gắn cờ).
2. Đặt cờ: g toàn cầu, tôi không phân biệt chữ hoa chữ thường, m đa dòng.
3. Dán văn bản mẫu vào vùng chuỗi thử nghiệm.
4. Xem lại khớp, thu thập nhóm và thay thế bản xem trước nếu có.
Ví dụ về Regex
Xác thực email
^[\\w.-]+@[\\w.-]+\\.\\w+$ nắm bắt các email đơn giản — không hoàn hảo theo RFC nhưng hữu ích cho các biểu mẫu.
Trích xuất ngày ISO
\\d{4}-\\d{2}-\\d{2} tìm thấy 2024-03-15 trong dòng nhật ký để thay thế grep.
Slugify helper
Thay thế [^a-z0-9]+ bằng dấu gạch nối cho sên URL từ chuỗi tiêu đề.
Khi nào nên dùng biểu thức chính quy
• Khi xác thực chuỗi có cấu trúc (điện thoại, mã bưu chính).
• Khi phân tích cú pháp nhật ký bán cấu trúc.
• Khi tìm hiểu các nhóm thu thập và tra cứu.
Khi nào cần tránh biểu thức chính quy
• Khi phân tích cú pháp HTML hoặc JSON — hãy dùng trình phân tích cú pháp thích hợp.
• Khi biểu thức chính quy không thể đọc được — hãy chia thành logic mã.
• Khi nào Rủi ro ReDoS đối với các mẫu do người dùng cung cấp trong máy chủ — thời gian chờ và độ dài giới hạn.
Nhận thức về ReDoS
Các bộ định lượng lồng nhau như (a+)+ trên CPU treo chuỗi xấu — tránh biểu thức chính quy của người dùng trên máy chủ hoặc sử dụng các công cụ an toàn khi hết thời gian chờ.
Xác thực so với extract
Mẫu neo ^...$ xác thực toàn bộ chuỗi; unanchored tìm thấy chuỗi con ở bất cứ đâu.
Thay thế trong trình soạn thảo
VS Code sử dụng biểu thức chính quy JS tương tự trong tìm-thay thế — kiểm tra tại đây rồi dán mẫu.
Câu hỏi thường gặp
Loại biểu thức chính quy nào?
JavaScript RegExp — tồn tại sự khác biệt về PCRE (hỗ trợ giao diện thay đổi tùy theo phiên bản công cụ).
Cờ toàn cầu g?
Tìm tất cả các kết quả phù hợp không chỉ đầu tiên — testStateful với LastIndex trong JS.
Thoát các ký tự đặc biệt?
. * + ? [ ] ( ) { } | \\ ^ $ cần thoát để khớp theo nghĩa đen.
Thu thập các nhóm?
Dấu ngoặc đơn ( ) tạo các nhóm được đánh số có thể truy cập được thay thế $1 $2.
Local?
Có.
Đa dòng ^ $?
m làm cho ^ $ khớp với các ranh giới dòng chứ không phải toàn bộ chuỗi.