Ограничение на загрузку аудио/видео файла Blueimp jQuery

Может ли кто-нибудь сказать мне, как я могу ограничить загрузку аудио/видео файлов с помощью загрузки файла Blueimp jQuery?

Я нашел белый список, используя следующую опцию acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,, но я хочу добавить аудио- и видеофайлы в черный список, а не в белый список.

Я пробовал следующее, чтобы отрицать файлы .exe и .js acceptFileTypes: /(\.|\/)(?!exe|js)$/i, которые ограничивают все типы файлов независимо от их расширений.

заранее спасибо


person zakaria    schedule 28.04.2016    source источник


Ответы (1)


Вы ставите $ не в том месте. Если вы хотите найти что-то кроме .exe, .js, используйте

(\.|\/)(?!(exe|js)$)

Демонстрация регулярных выражений

Причина :- Упреждения имеют нулевое утверждение ширины. Это означает, что они не потребляют никаких символов. В вашем регулярном выражении

(\.|\/)(?!exe|js)$

вы проверяете exe или js сразу после . с помощью просмотра вперед. Как только он проверен, позиция сбрасывается сразу после .. Теперь ваше регулярное выражение проверяет, является ли оно концом строки, используя $. Но остался символ, поэтому это не конец строки, и ваше регулярное выражение не будет работать для любого расширения.

Ниже приведено пояснение для вашего регулярного выражения (\.|\/)(?!exe|js)$ для строки abcd.jpg. (Пробелы только для ясности)

    abcd .  jpg
        ^^  ^^ 
        ||  ||
(Matches .) (New position after consuming .)

После . следует jpg, которое не должно сопоставляться ни с exe, ни с js ‹---хорошо до сих пор

Поскольку просмотр вперед имеет нулевую ширину, позиция остается там, где она есть после проверки того, что последующее не является ни exe, ни js

 abcd . jpg
        ^^
        ||
 Check whether its $ i.e. end of string. This is False because we have j. So no match is returned

Если вы хотите добавить в черный список аудио- и видеофайлы, вот стартер

(?:[.\\])(?!(mp3|m4a|wmv|mp4|mkv)$)\w+

Демонстрация регулярных выражений

person rock321987    schedule 28.04.2016