Mevcut yanıtların hiçbiri, talebin basitliği için yeterince kompakt görünmüyordu. Belirli bir dosya giriş alanının bir kümeden bir uzantıya sahip olup olmadığını kontrol etmek şu şekilde gerçekleştirilebilir:
function hasExtension(inputID, exts) {
var fileName = document.getElementById(inputID).value;
return (new RegExp('(' + exts.join('|').replace(/\./g, '\\.') + ')$')).test(fileName);
}
Dolayısıyla örnek kullanım şöyle olabilir ( bir dosya girdisinin nerede upload
olduğu id
):
if (!hasExtension('upload', ['.jpg', '.gif', '.png'])) {
}
Veya bir jQuery eklentisi olarak:
$.fn.hasExtension = function(exts) {
return (new RegExp('(' + exts.join('|').replace(/\./g, '\\.') + ')$')).test($(this).val());
}
Örnek kullanım:
if (!$('#upload').hasExtension(['.jpg', '.png', '.gif'])) {
}
.replace(/\./g, '\\.')
Bu temel uzantıları herhangi bir karakter eşleşen noktalar olmadan geçirilebilir böylece regexp için nokta var kaçmak.
Bunları kısa tutmak için kontrol etmekte bir hata yoktur, muhtemelen bunları kullanırsanız, girişin önce var olduğundan ve uzantı dizisinin geçerli olduğundan emin olursunuz!