Вы ставите $
не в том месте. Если вы хотите найти что-то кроме .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