В вашем паттерне ^(?!image$|btserve$).*mtonews.com.*$
вы используете отрицательный прогноз, утверждающий, что строка не начинается с изображения или btserve, за которым следует конец строки.
Это верно для всех примеров, и поскольку все они содержат mtonews.com, все они будут совпадать.
Если вы хотите сопоставить URL-адреса, начинающиеся с протокола http, и URL-адрес mtonews.com/
, используя отрицательный прогноз (?!\.image)
, чтобы удостовериться, что следующее не .image
, вы можете поместить его после косой черты:
^https?://mtonews\.com/(?!\.image).*$
^
Начало строки
https?://
Сопоставить начало с необязательным s
mtonews\.com/
Совпадение mtonew.com с последующей косой чертой и экранирование точки, чтобы буквально соответствовать ей
(?!\.image)
Отрицательный взгляд, утверждаю, что то, что прямо справа, не является .image
.*
Соответствует любому символу, кроме новой строки, до конца строки
$
Конец строки
Regex demo
Обратите внимание, что вы можете заменить .*$
на \S+$
, чтобы сопоставить непробельные символы для URL, поскольку точка также соответствует пробелу.