Nenhuma das respostas existentes parecia compacta o suficiente para a simplicidade do pedido. Verificar se um determinado campo de entrada de arquivo tem uma extensão de um conjunto pode ser feito da seguinte forma:
function hasExtension(inputID, exts) {
var fileName = document.getElementById(inputID).value;
return (new RegExp('(' + exts.join('|').replace(/\./g, '\\.') + ')$')).test(fileName);
}
Portanto, o uso de exemplo pode ser (onde upload
é o id
de uma entrada de arquivo):
if (!hasExtension('upload', ['.jpg', '.gif', '.png'])) {
}
Ou como um plugin jQuery:
$.fn.hasExtension = function(exts) {
return (new RegExp('(' + exts.join('|').replace(/\./g, '\\.') + ')$')).test($(this).val());
}
Exemplo de uso:
if (!$('#upload').hasExtension(['.jpg', '.png', '.gif'])) {
}
O .replace(/\./g, '\\.')
existe para escapar do ponto para a expressão regular, de modo que as extensões básicas possam ser passadas sem os pontos correspondendo a qualquer caractere.
Não há verificação de erros para mantê-los curtos, presumivelmente, se você usá-los, terá certeza de que a entrada existe primeiro e que o array de extensões é válido!