Regex Debugger - Công Cụ Debug và Test Regular Expressions Online Miễn Phí
Công cụ debug và test Regular Expressions (Regex) online miễn phí. Real-time matching với highlighting trực quan - thấy ngay matches khi gõ. Hiển thị tất cả capture groups với index. Toggle flags dễ dàng: global (g), case-insensitive (i), multiline (m), dotall (s). Có sẵn examples cho email, phone, URL, IP. Copy pattern với flags. Xử lý hoàn toàn trên browser - pattern và data không gửi lên server. Hữu ích cho developers khi viết và debug regex cho validation, parsing, text processing.
Tính năng nổi bật
- Real-time matching - thấy kết quả ngay khi gõ pattern hoặc test string
- Highlighting trực quan - matches được đánh dấu 【】 trong text
- Hiển thị tất cả matches với index position
- Extract và hiển thị capture groups ($1, $2, ...)
- Toggle flags dễ dàng: g (global), i (case-insensitive), m (multiline), s (dotall)
- Error messages rõ ràng khi pattern invalid
- Examples có sẵn: Email, Phone VN, URL, IPv4
- Copy pattern với flags (format: /pattern/flags)
- Giải thích chi tiết từng flag
- Xử lý 100% trên browser - bảo mật data
- Không giới hạn độ dài pattern và test string
- Hỗ trợ tất cả JavaScript regex features
Tại sao cần Regex Debugger?
Regular Expressions (Regex) là công cụ mạnh mẽ để pattern matching và text processing, nhưng cũng nổi tiếng khó viết và debug. Một regex phức tạp có thể mất hàng giờ để viết đúng. Regex Debugger giúp bạn: Thấy ngay matches khi gõ - không cần chạy code để test. Hiểu regex hoạt động thế nào với highlighting. Debug capture groups - xem chính xác mỗi group capture được gì. Test với nhiều inputs khác nhau nhanh chóng. Học regex - xem examples và thử nghiệm. Công cụ này đặc biệt hữu ích khi viết regex cho form validation (email, phone, password), parsing logs, extracting data từ text, hoặc search & replace phức tạp.
Lợi ích khi sử dụng
- Tiết kiệm thời gian - không cần chạy code để test regex
- Debug nhanh - thấy ngay vấn đề với pattern
- Học regex hiệu quả - thử nghiệm và xem kết quả realtime
- Hiểu capture groups - biết chính xác mỗi group capture gì
- Test edge cases - thử nhiều inputs khác nhau
- Avoid bugs - đảm bảo regex hoạt động đúng trước khi dùng trong code
Cách sử dụng Regex Debugger
- 1Nhập regex pattern vào ô Pattern (không cần dấu / ở đầu và cuối)
- 2Hoặc click vào một example (Email, Phone VN, URL, IPv4) để load pattern mẫu
- 3Toggle các flags theo nhu cầu: g (tìm tất cả), i (không phân biệt hoa thường), m (multiline), s (. match newline)
- 4Nhập test string vào ô Test String - có thể paste nhiều dòng
- 5Xem kết quả realtime: số matches, vị trí (index), và capture groups
- 6Xem highlighted text với matches được đánh dấu 【】
- 7Nếu có error (pattern invalid), xem error message để fix
- 8Click Copy để sao chép pattern với flags (format: /pattern/flags)
- 9Dùng pattern trong code của bạn
Các Lỗi Regex Phổ Biến Và Cách Debug Hiệu Quả
Khi viết regex, các lỗi thường gặp và cách khắc phục: Quên escape special characters - dấu . match BẤT KỲ ký tự nào, cần \. để match literal dot. Tương tự cho * + ? ^ $ { } [ ] ( ) | \. Greedy vs Lazy matching - .* (greedy) match nhiều nhất có thể, .*? (lazy) match ít nhất. Ví dụ: <.*> match toàn bộ '<b>text</b>', <.*?> chỉ match '<b>'. Character class sai - [a-Z] không valid, phải [a-zA-Z]. Thiếu anchors - ^pattern$ cho exact match, không có thì match substring. Backtracking catastrophe - (a+)+ với input 'aaaaaaaaaaX' có thể freeze browser. Unicode issues - \w không match ký tự tiếng Việt có dấu, cần [\p{L}] với flag u. Sử dụng Regex Debugger này để test từng bước và thấy ngay vấn đề.
So Sánh Regex Debugger Với Các Công Cụ Tương Tự
Có nhiều regex debugger tools phổ biến: Regex101 - full-featured, hỗ trợ nhiều flavors (PCRE, Python, Go, Java), có giải thích từng phần của pattern, lưu history. RegExr - giao diện đẹp, có community patterns, cheat sheet tích hợp. Debuggex - visualize regex dưới dạng railroad diagram. Công cụ Regex Debugger của chúng tôi tập trung vào JavaScript regex (phổ biến nhất trong web development), với ưu điểm: xử lý 100% trên browser - data không gửi lên server nào, quan trọng khi debug regex với dữ liệu nhạy cảm (log files, user data). Real-time matching cực nhanh, toggle flags bằng switch trực quan, examples có sẵn cho patterns phổ biến tại Việt Nam (phone VN), copy pattern với flags chỉ 1 click.
Ứng Dụng Regex Trong Các IDE Và Text Editors
Regex không chỉ dùng trong code mà còn cực kỳ hữu ích trong editors: VS Code - Ctrl+H bật regex search/replace, hỗ trợ capture groups $1, $2 trong replacement. Ví dụ: tìm (\w+)@(\w+) replace thành User: $1, Domain: $2. Sublime Text - tương tự VS Code, hỗ trợ regex trong Find/Replace và multi-cursor. JetBrains IDEs - IntelliJ, WebStorm, PyCharm đều có regex search mạnh mẽ với preview kết quả. Vim/Neovim - regex là core feature, :%s/pattern/replacement/g cho global replace. Notepad++ - hỗ trợ regex search/replace, bookmark lines matching pattern. Sử dụng Regex Debugger để viết và test pattern trước, sau đó copy vào editor. Lưu ý: một số editors dùng PCRE regex khác JavaScript, đặc biệt với lookbehind và Unicode properties.
Quy Trình Debug Regex Hiệu Quả Với Công Cụ Này
Thay vì viết cả pattern phức tạp một lần rồi mới test, nên đi theo quy trình từng bước: 1) Viết phần pattern đơn giản nhất trước (ví dụ chỉ \d+ để bắt số), nhập một test string ngắn và chắc chắn khớp, xác nhận match đúng vị trí mong muốn. 2) Thêm dần từng phần pattern (thêm group, thêm ký tự literal xung quanh) và test lại sau mỗi lần thêm - nếu match sai ngay sau một thay đổi, bạn biết chính xác phần nào gây lỗi. 3) Thử với test string chứa nhiều dòng, ký tự đặc biệt, chuỗi rỗng và các edge case (số 0, chuỗi rất dài) để chắc chắn pattern không chỉ đúng với ví dụ đẹp. 4) Bật/tắt từng flag (g, i, m, s) riêng lẻ để hiểu chính xác flag nào thay đổi kết quả, tránh bật tất cả flag rồi đoán mò. 5) Khi pattern đã ổn định, copy sang code thật và test lại với dữ liệu thực tế của ứng dụng, vì tool chỉ chạy JavaScript regex engine nên hành vi có thể khác nếu bạn dùng ngôn ngữ khác.
Bảng Tham Chiếu Nhanh Các Ký Hiệu Regex Thường Dùng
Anchors: ^ (đầu string/dòng), $ (cuối string/dòng), \b (word boundary). Quantifiers: * (0 trở lên), + (1 trở lên), ? (0 hoặc 1), {n,m} (từ n đến m lần), thêm ? sau quantifier để chuyển thành lazy (ít tham lam hơn). Character classes: \d (chữ số), \w (chữ/số/gạch dưới), \s (khoảng trắng), \D \W \S là phủ định tương ứng, [abc] (một trong các ký tự), [^abc] (không phải các ký tự đó), [a-z] (khoảng). Groups: (...) capture group, (?:...) non-capturing group, (?<name>...) named capture group (JavaScript hỗ trợ từ ES2018). Lookaround: (?=...) lookahead khẳng định, (?!...) lookahead phủ định, (?<=...) lookbehind khẳng định, (?<!...) lookbehind phủ định. Ghi nhớ bảng này giúp đọc và viết pattern nhanh hơn thay vì phải tra cứu lại mỗi lần.
Câu hỏi thường gặp (FAQ)
Regex flags là gì và khi nào dùng?
Flags thay đổi cách regex hoạt động: g (global) - tìm tất cả matches, không dừng ở match đầu tiên. i (case-insensitive) - không phân biệt chữ hoa/thường, 'A' match 'a'. m (multiline) - ^ và $ match đầu/cuối mỗi dòng, không chỉ đầu/cuối string. s (dotall) - dấu . match cả newline character. Thường dùng: gi cho search all case-insensitive, g cho replace all.
Capture groups là gì?
Capture groups là phần pattern trong ngoặc đơn (). Khi regex match, nội dung match bởi mỗi group được 'capture' và có thể truy cập riêng. Ví dụ: pattern '(\d{2})/(\d{2})/(\d{4})' match '25/12/2024' sẽ capture $1='25', $2='12', $3='2024'. Groups hữu ích để extract parts của match hoặc dùng trong replacement.
Tại sao regex không match như expected?
Các lỗi phổ biến: Quên escape special characters (. * + ? ^ $ cần \). Thiếu flag g nên chỉ match lần đầu. Pattern quá strict (dùng ^ $ khi không cần). Không tính đến whitespace. Character class sai ([a-Z] không valid, phải [a-zA-Z]). Dùng tool này để debug từng bước.
Làm sao match nhiều dòng?
Bật flag m (multiline). Khi đó ^ match đầu mỗi dòng (không chỉ đầu string), $ match cuối mỗi dòng. Nếu muốn . match cả newline, bật thêm flag s (dotall). Hoặc dùng [\s\S] thay cho . để match mọi character kể cả newline.
Regex có giới hạn performance không?
Có. Regex phức tạp với nhiều backtracking có thể rất chậm (catastrophic backtracking). Tránh nested quantifiers như (a+)+. Tránh .* khi có thể dùng pattern cụ thể hơn. Test với input lớn để đảm bảo performance. Tool này chạy trên browser nên bạn sẽ thấy ngay nếu regex quá chậm.
JavaScript regex khác gì với các ngôn ngữ khác?
JavaScript regex có một số khác biệt: Không có lookbehind trong ES5 (có từ ES2018). Không có named groups trong ES5 (có từ ES2018). Flag s (dotall) chỉ có từ ES2018. Không có x flag (verbose). Nếu dùng regex này trong Python, PHP, Java, có thể cần adjust syntax.
Làm sao escape special characters?
Special characters trong regex: . * + ? ^ $ { } [ ] \ | ( ). Để match literal character, thêm \ phía trước. Ví dụ: match dấu chấm dùng \., match dấu $ dùng \$. Trong JavaScript string, \ cũng là escape character nên cần \\. Ví dụ: new RegExp('\\d+') hoặc /\d+/.
Non-capturing group là gì?
Non-capturing group (?:...) group pattern mà không capture. Hữu ích khi cần group để apply quantifier nhưng không cần extract value. Ví dụ: (?:https?://)? match optional http:// hoặc https:// mà không tạo capture group. Giúp giữ $1, $2 cho các groups quan trọng.
Vì sao nên test regex với nhiều test string khác nhau thay vì chỉ một câu?
Một pattern có thể match đúng với ví dụ 'đẹp' bạn nghĩ ra đầu tiên nhưng lại sai với các trường hợp biên: chuỗi rỗng, số 0, ký tự Unicode có dấu, chuỗi rất dài, hoặc input có khoảng trắng thừa. Nên chuẩn bị vài test string gồm: trường hợp điển hình, trường hợp KHÔNG nên match (để chắc pattern không quá lỏng), và các edge case đặc thù của dữ liệu thật (ví dụ số điện thoại có mã vùng, email có dấu +). Dán từng loại vào ô Test String và quan sát số lượng matches cùng vị trí index để phát hiện sai lệch sớm.
Tool có hỗ trợ named capture groups (?<name>...) không?
Có, vì tool dùng JavaScript regex engine gốc của trình duyệt (RegExp), engine này hỗ trợ named capture group từ ES2018 trở đi trên các trình duyệt hiện đại. Bạn có thể nhập pattern dạng (?<year>\d{4})-(?<month>\d{2}), tool sẽ vẫn hiển thị các group này trong danh sách 'Groups' theo thứ tự $1, $2 như group thường (giao diện hiện tại chưa hiển thị riêng tên group), nên nếu cần biết tên group nào ứng với giá trị nào, hãy đối chiếu lại với thứ tự khai báo trong pattern.
Làm sao biết regex bị catastrophic backtracking khi dùng tool này?
Dấu hiệu rõ nhất là tab trình duyệt bị đơ hoặc rất chậm phản hồi ngay sau khi bạn gõ xong một pattern có cấu trúc lồng nhiều quantifier như (a+)+ hoặc (\w+\s?)+ với test string dài chứa ký tự không match ở cuối. Vì tool tính toán lại kết quả mỗi khi bạn gõ (real-time), một pattern gây catastrophic backtracking có thể làm cả trang treo tạm thời. Nếu gặp tình huống này, hãy tải lại trang, sau đó viết lại pattern để tránh nested quantifiers hoặc dùng non-capturing group với quantifier rõ ràng hơn thay vì lồng + hoặc * vào nhau.
Dữ liệu pattern và test string tôi nhập có được lưu lại hoặc gửi lên server không?
Không. Toàn bộ việc tạo RegExp, exec() tìm matches và highlight kết quả đều chạy bằng JavaScript ngay trên trình duyệt của bạn, không có request nào gửi pattern hay test string lên server của Tấn Phát Digital hay bên thứ ba. Vì vậy bạn có thể yên tâm dán log thật, dữ liệu người dùng hoặc chuỗi nhạy cảm vào để debug mà không lo bị lưu lại ở đâu ngoài máy mình - dù vậy, khi chia sẻ pattern cho đồng nghiệp, chỉ nên copy phần pattern/flags chứ không cần copy nguyên test string chứa dữ liệu thật.
Từ khóa liên quan
- regex debugger
- regex tester online
- test regular expression
- debug regex
- regex validator
- regex pattern tester
- javascript regex tester
- regex match online
- regular expression debugger
- regex capture groups
- regex cheat sheet
- kiểm tra regex online
- công cụ test regex
- regex flags g i m s
- named capture group regex
- regex lookbehind lookahead
- sửa lỗi regex
- quy trình debug regex
