Регулярное выражение (\.(?!(jpg|png|jpeg)))$
соответствует .
в конце ввода, поскольку между \.
и $
не существует шаблона потребления. Вам нужно добавить шаблон потребления для расширения, например, [^.]+
, который соответствует любым 1+ символам, кроме .
:
\.(?!(png|jpe?g)$)[^.]+$
Примечание. Я сжал jpeg|jpg
в jpe?g
и добавилпроверка конца строки в заголовке так, чтобы расширения, начинающиеся с запрещенных расширений (например, png2
(если вы когда-либо сталкивались с ним)), могли совпадать, а png
- не могли.