Специальное выражение не допускается - Регулярное выражение в PHP - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь сопоставить мою строку, чтобы не допустить регистр: например 150x150 из названия изображения ниже:

test-string-150x150.png

Я использую следующий шаблон для сопоставления с этой строкой:

/^([^0-9x0-9]+)\..+/

Работает нормально, за исключением случаев:

teststring.com-150x150. jpg

Что мне нужно получить - маска должна запрещать только измерения в конце строки , вот несколько примеров:

test- string-150x150.png> должен запретить

any-string.png> разрешить

200x200-test.png> разрешить

1x1.png-100x100.jpg> запретить

Ответы [ 2 ]

1 голос
/ 06 февраля 2020

Вы можете использовать отрицательный взгляд, чтобы утверждать, что строка не содержит размеров, за которыми следуют точка и 1+ слова, до конца строки.

^(?!.*\d+x\d+\.\w+$).+$

Объяснение

  • ^ Начало строки
  • (?! Отрицательный прогноз, утверждаем, что справа не является
    • .* Совпадение 0+ вхождений любой символ, кроме новой строки
    • \d+x\d+ Соответствует формату размеров, где \ d + означает 1 или более цифр
    • \.\w+$ Соответствует точке, 1+ символам слова и утверждению конца строка $
  • ) Закрыть взгляд вперед
  • .+ Совпадение 1+ вхождений любого символа, кроме новой строки
  • $ Конец строки

Regex demo

0 голосов
/ 05 февраля 2020

Если я понимаю ваш вопрос, вы пытаетесь найти имена изображений, которые не включают размеры изображения. Если это так, попробуйте следующее:

/^(?![\w-\.]+(\d+x\d+))[\w-\.]+\.\w+$/gm

Подробнее об этом коде см. regexr.com / 4tmd1 . Этот сайт - отличное место, где можно поиграть с регулярными выражениями, чтобы убедиться, что вы получаете ожидаемые результаты.

Имейте в виду, что точный синтаксис регулярного выражения зависит от механизма регулярных выражений, используемого любой программой, которую вы ' снова работает.

...