Nạp nhanh mẫu regex
Bảng tra cứu cú pháp Regex
Lỗi Regex thường gặp
| Lỗi | Ý nghĩa | Cách sửa |
|---|---|---|
| Unterminated group | Nhóm bắt thiếu dấu ngoặc đóng | Đếm dấu ( và ) — phải cân bằng |
| Invalid escape | Dấu \ theo sau bởi ký tự không hợp lệ | Dùng escape hợp lệ: \d, \w, \s, \b, \n, \t |
| Nothing to repeat | Bộ lượng từ (*, +, ?) không có mục tiêu | Đặt ký tự hoặc nhóm trước bộ lượng từ |
| Unterminated character class | Dấu [ thiếu dấu ] | Đóng lớp ký tự bằng ] |
| Invalid quantifier | {n,m} viết sai cú pháp | Dùng {n}, {n,}, hoặc {n,m} với n <= m |
Biểu thức chính quy là gì?
Biểu thức chính quy (Regular Expression hay Regex) là chuỗi ký tự đặc biệt mô tả một mẫu tìm kiếm. Được phát triển bởi nhà toán học Stephen Cole Kleene vào những năm 1950, regex ban đầu thuộc lý thuyết ngôn ngữ hình thức. Ngày nay, regex là công cụ không thể thiếu trong mọi ngôn ngữ lập trình, từ JavaScript đến Python, Java, Go, và Rust.
Regex hoạt động bằng cách so khớp mẫu (pattern matching) với chuỗi ký tự. Một mẫu đơn giản như \d+ khớp với một hoặc nhiều chữ số, còn mẫu phức tạp hơn có thể xác thực email, phân tích log, trích xuất dữ liệu từ văn bản phi cấu trúc, và thay thế hàng loạt trong file.
Cú pháp Regex cơ bản
Regex JavaScript (ECMAScript) hỗ trợ các nhóm cú pháp chính:
- Ký tự đơn:
.khớp bất kỳ ký tự nào (trừ xuống dòng nếu không bật cờs). Dùng\.để khớp dấu chấm thật. - Lớp ký tự:
[abc]khớp a, b, hoặc c.[^abc]khớp bất kỳ ký tự nào NGOẠI TRỪ a, b, c.[a-z]khớp mọi chữ thường. - Bộ lượng từ:
*(0+),+(1+),?(0 hoặc 1),{n}(chính xác n),{n,m}(từ n đến m). - Nhóm bắt:
(abc)tạo nhóm bắt.(?:abc)nhóm không bắt.(?<name>abc)nhóm đặt tên. - Neo vị trí:
^đầu chuỗi,$cuối chuỗi,\bbiên từ. - Nhìn trước/sau:
(?=...)nhìn trước thuận,(?!...)nhìn trước phủ,(?<=...)nhìn sau thuận,(?<!...)nhìn sau phủ.
Cờ Regex trong JavaScript
| Cờ | Tên | Tác dụng |
|---|---|---|
g | Global | Tìm tất cả kết quả khớp, không dừng sau kết quả đầu tiên |
i | Case Insensitive | Bỏ qua phân biệt hoa thường: /abc/i khớp cả ABC |
m | Multiline | ^ và $ khớp đầu/cuối mỗi dòng thay vì toàn bộ chuỗi |
s | DotAll | . khớp cả ký tự xuống dòng (\n) |
u | Unicode | Xử lý đúng ký tự Unicode 4-byte (emoji, CJK) |
Lỗi Regex thường gặp
1. Quên bật cờ Global (g)
Nếu không có cờ g, regex chỉ trả về kết quả khớp đầu tiên. Đây là lỗi phổ biến nhất khi dùng String.match() hoặc String.matchAll(). Luôn bật g khi cần tìm tất cả.
2. Catastrophic Backtracking
Mẫu có nhiều bộ lượng từ lồng nhau như (a+)+ có thể khiến regex chạy theo cấp số mũ. Khi chuỗi không khớp, engine thử mọi tổ hợp trước khi kết luận. Giải pháp: dùng bộ lượng từ sở hữu (a++) hoặc thiết kế mẫu chặt chẽ hơn.
3. Escape ký tự đặc biệt
Các ký tự . * + ? ^ $ {} [] () | \ có ý nghĩa đặc biệt trong regex. Để khớp chúng theo nghĩa đen, phải thêm \ phía trước: \., \*, \(.
Regex trong thực tế
- Xác thực dữ liệu: email, số điện thoại, mã bưu chính, URL — regex là tuyến phòng thủ đầu tiên trên form.
- Phân tích log: trích xuất timestamp, IP, HTTP status từ file log server bằng mẫu regex.
- Tìm và thay thế: IDE như VS Code hỗ trợ regex tìm/thay thế hàng loạt — tiết kiệm hàng giờ refactoring.
- Web scraping: trích xuất dữ liệu cụ thể từ HTML khi parser DOM không khả dụng.
- Bảo mật: phát hiện SQL injection, XSS pattern trong input qua WAF rules dùng regex.
Câu hỏi thường gặp
Công cụ lập trình khác
Find and Replace Text Online — Regex Search Replace Tool
Find and replace text online with regex support, case-sensitive matching, whole-word search, and highlighted matches. See match count and replace all or one at a time. Free browser-based tool for writers, developers, and data analysts.
JSON Formatter — Beautify, Minify & Validate JSON Online
Format, beautify, and minify JSON data with real-time validation. Configurable indentation (2/4/tab), instant error detection, copy and download. Free online JSON formatter for developers.
Slug Generator — Create SEO-Friendly URL Slugs Instantly
Convert any title or text into clean, SEO-friendly URL slugs instantly. Supports Vietnamese, multilingual transliteration, bulk mode, and custom separators. Try it free now.
Hash Generator — Create MD5 SHA-1 SHA-256 SHA-512 Online
Generate MD5, SHA-1, SHA-256, SHA-512 hashes from text or files instantly. All processing in your browser via Web Crypto API — try it free, no signup.
Giới thiệu về Developer Tools
Công cụ developer tự động hóa các phần lặp đi lặp lại của công việc phần mềm: format JSON, encode/decode Base64, decode JWT để xác minh claim của token, tạo UUID, format XML, diff cấu hình. Đây không phải tác vụ hào nhoáng, nhưng là các điểm nghẽn ngốn 10-15 phút nhiều lần mỗi ngày — cộng lại hàng giờ mỗi tuần. Chạy chúng trên tab trình duyệt sạch sẽ hơn vật lộn với phụ thuộc CLI hay extension IDE có thể gửi dữ liệu riêng tư của bạn cho bên thứ ba.
Vì sao nó quan trọng
Công cụ developer client-side nhanh về cơ bản quan trọng vì chúng được dùng với dữ liệu nhạy cảm. JWT token chứa danh tính người dùng. Payload Base64 có thể encode API key. JSON dump bao gồm bản ghi khách hàng. Nếu một 'công cụ developer' gửi input của bạn lên server để xử lý, bạn vừa rò rỉ production secret. Công cụ dev của ZestLab chạy 100% client-side không có network call nào sau khi load page — những gì bạn paste vẫn ở trong trình duyệt.
Riêng tư và an toàn
Tất cả công cụ developer ở đây chạy trong trình duyệt bằng JavaScript thuần. Không có 'decode server' hay 'format API' — JWT, JSON, payload encode của bạn được parse bởi code chạy trên laptop của bạn. Tự xác minh bằng DevTools trình duyệt → Network tab: bạn sẽ thấy không có request nào khi dùng bất kỳ công cụ nào. Đó là tiêu chuẩn chúng tôi giữ vì công cụ dev xử lý secret.
Thực hành tốt
- Không bao giờ paste JWT hay API token production vào BẤT KỲ công cụ online nào mà không xác minh chạy client-side (check tab Network)
- Dùng chế độ ẩn danh trình duyệt để decode một lần các payload nhạy cảm
- Bookmark công cụ bạn dùng hàng ngày — URL công cụ ZestLab ổn định, không cần tài khoản
- Khi format JSON có secret để team review, redact credential trước khi share output