Hướng dẫn công cụ
Về Trình kiểm tra regex
Regex tester chạy JavaScript regular expressions trên văn bản và hiển thị live matches, capture groups, match indices.
Dùng để debug pattern email, URL, log-line, extraction và form-validation cục bộ trong trình duyệt.
Cách dùng Regex Tester
- Nhập regular expression không kèm / / bên ngoài.
- Bật flags g, i, m, s, u hoặc y khi cần.
- Dán test văn bản và xem từng match, capture group, index.
Khi nào nên dùng
- Kiểm tra form-validation pattern có từ chối đầu vào hợp lệ không.
- Trích xuất IDs, URLs hoặc error codes từ logs và văn bản.
- So sánh greedy và lazy quantifiers để kiểm soát match length.
Flags, capture groups và lỗi thường gặp
JavaScript regex nhạy với flags, escaping và quantifiers. Thiếu backslash hoặc .* quá rộng có thể làm kết quả khác hoàn toàn.
- g trả về tất cả matches; không có g thường chỉ xem match đầu.
- i bỏ qua hoa/thường, m làm ^ và $ hoạt động theo từng dòng.
- Parentheses tạo capture groups; (?: ) tránh capture không cần thiết.
- Heavy backtracking có thể làm văn bản dài chậm, tránh nested quantifiers.
Câu hỏi thường gặp về Trình kiểm tra regex
- Có cần nhập /pattern/g không?
- Không. Chỉ nhập pattern, flags đặt ở controls riêng.
- Vì sao match dài hơn dự kiến?
- .* và .+ mặc định là greedy. Thử .*? hoặc character class cụ thể hơn.
- Test văn bản có bị upload không?
- Không. Matching chạy cục bộ trong trình duyệt và không upload lên wetool.site.
Regex Tester và xác thực trên môi trường sản xuất
Tester cho feedback nhanh, nhưng xác thực trên môi trường sản xuất vẫn cần trường hợp biên, giá trị rỗng, đầu vào Unicode và khác biệt bộ máy regex phía máy chủ.
Checklist catastrophic backtracking
Regex chạy đúng trên sample ngắn vẫn có thể hang với đầu vào dài. Trước khi release, hãy kiểm tra nested quantifiers và broad wildcards.
- Tránh explosive nested hoặc overlapping patterns như (.*)+, (.+)+ hoặc (a|aa)+.
- Dùng explicit character classes thay vì .* khi có thể; ví dụ [^,]* cho comma-delimited field.
- Giới hạn user-controlled đầu vào length và đặt server-side timeouts hoặc dùng regex engine có safe execution controls.
JavaScript regex vs engines ngôn ngữ khác
Pass trong online tester không đảm bảo máy chủ engine hoạt động giống vậy. Flags, lookbehind, Unicode và named captures khác nhau giữa engines.
- JavaScript g, i, m, s, u, y flags không map hoàn toàn với PCRE, Python hoặc Go options.
- Lookbehind, Unicode property escapes và named groups có thể không có trong old browsers hoặc một số máy chủ runtimes.
- Trước khi đưa pattern lên máy chủ, hãy cover giá trị rỗng, đầu vào dài, emoji và trường hợp xuống dòng bằng kiểm thử đơn vị bằng ngôn ngữ đích.