Правильный негативный взгляд в будущее, который вы пытаетесь построить, таков:
(?!.*\.(?:jpg|png|gif)$)
Который будет отклонять строку, если она заканчивается либо jpg
, либо png
, либо gif
, а общее регулярное выражение, которое необходимо использовать для отклонения строк:
^(?!.*\.(?:jpg|png|gif)$).+$
Демо
Кроме того, проблема с вашим регулярным выражением .*(?:(?!\.(jpg|png|gif)))$
заключается в том, что .*
уже будет жадно поглощать все, не оставляя символов вперед, и, следовательно, ваш отрицательный взгляд всегда будет соответствовать значению true, так как после него не останется никаких символов. тот, на чьей основе отрицательный взгляд вперед, может отклонить вашу строку. Следовательно, вам нужно переместить .*
внутрь отрицательного взгляда вперед, чтобы проверить допустимость нуля или более любых других символов перед .jpg
или .png
или .gif