Это, как это в настоящее время соответствие:
.*
- взахлеб матчей до до последнего /
- /something/contentimg
\/
- соответствует /
(.*)
- совпадает с остальной частью строки - coast03.jpg?itok=ABC
(?!\?.*)
- проверяет, что следующие символы не совпадают, так как мы уже в конце, это явно не будет соответствовать.
Что вы должны сделать:
Похоже, вы можете просто проверить, если ?
существует в строке, так что попробуйте:
/^(?!.*\?)/
Или матч до последнего /
, а затем проверить для ?
оттуда:
/^(?!.*\/.*\?)/
Пояснение:
Вы уже знаете, что (?!...)
отрицательный прогноз, вы просто не совсем уверены, как его использовать. Куда бы вы ни поместили его, он изо всех сил пытается сопоставить данный шаблон с этой позиции. Если это удается, регулярное выражение не совпадает. Поэтому было бы неплохо поставить это в самом начале и попытаться сопоставить остальную часть строки.
Так основной формат для этого примера:
/^(?!...).*$/
где (?!...)
содержит шаблон для строк, которые вы хотите исключить .
.*$
в конце не требуется, и если вы хотите проверить всю строку, запомните $
в конце ожидания.
/^(?!...$)/
Несвязанный, но полезный намек: когда вы встречаете путь, вы должны обернуть свой узор чем-то, кроме перекоса. Тогда вам не нужно скрывать косые черты, сохраняя ваш шаблон поиска более разборчивым: '# ^. */(. *) (?! \?. *) $ #' –
На каком языке вы используете? – sinsedrix