Regex kiểm tra tên file ảnh

Dùng /^.+\.(?:jpe?g|png|gif|webp|avif|svg)$/i để kiểm tra xem toàn bộ chuỗi có phải là tên file ảnh hợp lệ hay không. Mọi ví dụ bên dưới đều đã được kiểm thử với mẫu này, và bạn có thể mở chúng trong Regex Tester với sẵn dữ liệu mẫu.

Cập nhật

/^.+\.(?:jpe?g|png|gif|webp|avif|svg)$/i
Mở trong Regex Tester
Đầu vàoKết quả
photo.JPG✓ Khớp
logo.svg✓ Khớp
my.image.webp✓ Khớp
document.pdf✗ Không khớp
png✗ Không khớp
image.png.bak✗ Không khớp
.png✗ Không khớp

Cách hoạt động của mẫu

PhầnÝ nghĩa
^.+Một hoặc nhiều ký tự của tên file
\.Dấu chấm cuối cùng
(?:jpe?g|png|gif|webp|avif|svg)Một trong các phần mở rộng được phép (jpeg hoặc jpg)
i flagKhông phân biệt hoa thường, nên .JPG cũng khớp

Ví dụ code

JavaScript

const re = /^.+\.(?:jpe?g|png|gif|webp|avif|svg)$/i;
re.test(value); // true or false

Python

import re

bool(re.fullmatch(r'.+\.(?:jpe?g|png|gif|webp|avif|svg)', value, re.I))

PHP

preg_match('/^.+\.(?:jpe?g|png|gif|webp|avif|svg)$/i', $value) === 1;

Ghi chú và giới hạn

Kiểm tra phần mở rộng là đủ để đưa ra gợi ý cho người dùng, nhưng tuyệt đối không nên dựa vào đó để bảo mật — hãy kiểm tra nội dung file (magic bytes) trên máy chủ.

Câu hỏi thường gặp

Regex cho tên file ảnh là gì?
/^.+\.(?:jpe?g|png|gif|webp|avif|svg)$/i — biểu thức này khớp với toàn bộ chuỗi. Xem bảng phía trên để biết từng phần làm gì.
Ví dụ nào khớp?
Trong các ví dụ đã kiểm thử, những ví dụ khớp là: photo.JPG, logo.svg, my.image.webp. Các ví dụ còn lại thì không.
Làm sao để kiểm thử regex này?
Nhấn “Mở trong Regex Tester” — mẫu, cờ và văn bản mẫu sẽ tự động được tải, và các phần khớp sẽ được tô sáng khi bạn chỉnh sửa.