Проверьте тип файла с помощью Foundation Abide
Я пытаюсь использовать подключаемый модуль Abide Фонда для проверки типа расширения файла, загруженного во входной тег type="file", но у меня возникают проблемы с проверкой правильности проверки RegExp.
HTML:
<div class="large-2 columns button">
<input id="uploadResume" type="file" required pattern="resume" />
<small class="error">PDF or Word Document only please</small>
</div>
JavaScript:
$(document)
.foundation().foundation('abide', {
patterns: {
// check if the last 3 letters are acceptable
resume: /^.(doc|DOC|pdf|PDF)*$/
}
});
1 ответ
Сейчас вы пытаетесь сопоставить любой символ, за которым следуют упомянутые расширения, поэтому попробуйте этот шаблон:
ШАБЛОН
/\.(doc|DOC|pdf|PDF)$/
Он будет соответствовать только точке, за которой следует любое из упомянутых расширений, поэтому возможны следующие варианты:
.doc
.DOC
.pdf
.PDF
Но если вы хотите сопоставить все имя файла + расширение, используйте это:
ШАБЛОН
/^.+?\.(doc|DOC|pdf|PDF)$/
добавленной .+?
после ^
что означает "соответствовать любому символу, кроме новой строки 0 или более раз, пока не будет удовлетворен следующий токен", также добавлено \.
соответствовать точке перед расширением. Я тоже убрал *
который не нужен и будет вызывать повторяющиеся расширения.
Примеры
filename.PDF
Этот файл будет соответствовать.
filename.exe
Это не будет соответствовать.
ЗАКЛЮЧИТЕЛЬНЫЙ ОТВЕТ
Используя 2-й шаблон в качестве встроенного шаблона:
<input type="file" required pattern="^.+?\.(doc|DOC|pdf|PDF)$" />.
Очевидно, что при использовании встроенных шаблонов возникает некоторая проблема, которая заставляет вас удалять прямые косые черты как в начале, так и в конце шаблона. Кроме того, названные шаблоны, кажется, работают странно, и я не уверен, почему это так.