Żadna z istniejących odpowiedzi nie wydawała się wystarczająco zwięzła dla prostoty żądania. Sprawdzenie, czy dane pole wejściowe pliku ma rozszerzenie z zestawu można wykonać w następujący sposób:
function hasExtension(inputID, exts) {
var fileName = document.getElementById(inputID).value;
return (new RegExp('(' + exts.join('|').replace(/\./g, '\\.') + ')$')).test(fileName);
}
Tak więc przykładowe użycie może wyglądać tak (gdzie upload
jest id
wejście pliku):
if (!hasExtension('upload', ['.jpg', '.gif', '.png'])) {
}
Lub jako wtyczka jQuery:
$.fn.hasExtension = function(exts) {
return (new RegExp('(' + exts.join('|').replace(/\./g, '\\.') + ')$')).test($(this).val());
}
Przykładowe użycie:
if (!$('#upload').hasExtension(['.jpg', '.png', '.gif'])) {
}
.replace(/\./g, '\\.')
Jest tam, aby uciec z kropka na regexp tak że podstawowe rozszerzenia mogą być przekazywane w bez kropek odpowiadających dowolny znak.
Nie ma na nich żadnego sprawdzania błędów, aby były krótkie, prawdopodobnie jeśli ich użyjesz, upewnisz się, że dane wejściowe istnieją jako pierwsze, a tablica rozszerzeń jest prawidłowa!