Ninguna de las respuestas existentes parecía lo suficientemente compacta para la simplicidad de la solicitud. La verificación de si un campo de entrada de archivo dado tiene una extensión de un conjunto se puede lograr de la siguiente manera:
function hasExtension(inputID, exts) {
var fileName = document.getElementById(inputID).value;
return (new RegExp('(' + exts.join('|').replace(/\./g, '\\.') + ')$')).test(fileName);
}
Entonces, el uso de ejemplo podría ser (donde upload
está la id
entrada de un archivo):
if (!hasExtension('upload', ['.jpg', '.gif', '.png'])) {
}
O como un complemento de jQuery:
$.fn.hasExtension = function(exts) {
return (new RegExp('(' + exts.join('|').replace(/\./g, '\\.') + ')$')).test($(this).val());
}
Uso de ejemplo:
if (!$('#upload').hasExtension(['.jpg', '.png', '.gif'])) {
}
El .replace(/\./g, '\\.')
está allí para escapar del punto para la expresión regular de modo que las extensiones básicas se pueden pasar sin los puntos en juego cualquier carácter.
No hay ningún error al verificar estos para mantenerlos cortos, presumiblemente si los usa, se asegurará de que la entrada exista primero y que la matriz de extensiones sea válida.