Вы не можете «строка» внутри класса символов. Классы символов работают с символами, а не строками. Класс символов может соответствовать только одному из нескольких символов.
Таким образом, следующее регулярное выражение:
/[\.gif$\.png$\.bmp$\.jpg$\.jpeg$]/
соответствует одному символу из списка символов между [
и ]
. Также помните, что точка не является метасимволом внутри символьного класса, поэтому вам не нужно \.
- достаточно всего лишь .
, но это не имеет значения, потому что это неправильный подход.
Визуальное представление:
Используйте изменения, чтобы достичь того, чего вы хотите. Например, (foo|bar)
соответствует foo
илиbar
. Для ваших требований может работать следующее регулярное выражение:
/\.(gif|png|bmp|jpe?g)$/
Хотя, я бы не использовал регулярное выражение для этого. Уже существует функция, которая была построена с определенной целью - определить расширение файла (или URL):
$ext = pathinfo($url, PATHINFO_EXTENSION);