Cơ bản về regex
Mẫu regex chỉ là một cách ngắn gọn để mô tả văn bản bạn muốn khớp. Hãy bắt đầu đơn giản: khớp một thứ, kiểm thử, rồi chỉ thêm nhóm, điểm neo hoặc bộ định lượng khi cần.
Điểm neo
^ nghĩa là bắt đầu chuỗi đầu vào và $ nghĩa là kết thúc chuỗi đầu vào.
Lớp ký tự
[0-9], [A-Z], và [a-z] khớp các khoảng.
Bộ định lượng
* = không hoặc nhiều lần, + = một hoặc nhiều lần, ? = tùy chọn.
Các mẫu phổ biến
| Trường hợp sử dụng | Mẫu | Ghi chú |
|---|---|---|
| ^[^\s@]+@[^\s@]+\.[^\s@]+$ | Xác thực đa dụng tốt, không phải bộ phân tích RFC đầy đủ. | |
| URL | https?:\/\/[^\s]+ | Khớp các liên kết HTTP và HTTPS cơ bản. |
| Số nguyên | ^-?\d+$ | Hỗ trợ dấu âm tùy chọn. |
| Số thập phân | ^-?\d+(\.\d+)?$ | Khớp số nguyên và số thập phân. |
| Khoảng trắng | \s+ | Hữu ích để gộp các khoảng trắng và ngắt dòng lặp lại. |
| Màu hex | ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$ | Hỗ trợ màu dạng 3 chữ số và 6 chữ số. |
| IPv4 | \b(?:\d{1,3}\.){3}\d{1,3}\b | Khớp văn bản dạng IPv4, không xác thực nghiêm ngặt 0-255. |
| Dòng trống | ^\s*$ | Dùng với chế độ multiline để nhắm đến các dòng trống. |
Các cờ bạn dùng thường xuyên nhất
g global
Tìm tất cả kết quả khớp thay vì dừng sau kết quả đầu tiên.
i ignore case
Làm cho việc khớp không phân biệt chữ hoa chữ thường, hữu ích cho từ khóa và dữ liệu người dùng nhập.
m multiline
Làm cho ^ và $ hoạt động theo từng dòng.
s dotall
Hãy . khớp cả ngắt dòng lẫn ký tự thông thường.
Các cạm bẫy thường gặp của regex
- Đừng bắt đầu bằng một mẫu khổng lồ tích hợp mọi thứ. Hãy xây dựng dần dần và kiểm tra từng phần.
- Nhớ thoát các ký tự đặc biệt như ., ?, +, và [ khi bạn muốn ký tự theo nghĩa đen.
- Nếu chỉ muốn khớp toàn bộ từ, hãy thêm ranh giới như \bword\b.
- Hãy cẩn thận với cơ chế khớp tham lam. .* thường bắt được nhiều hơn bạn mong đợi.
Dùng tài liệu tham khảo này với công cụ phù hợp
Tra cứu một mẫu tại đây, sau đó kiểm thử trực tiếp, áp dụng vào văn bản thực tế hoặc dùng trong quy trình thay thế.