Как будет выглядеть регулярное выражение для общих расширений имен файлов для изображений? - PullRequest
0 голосов
/ 10 ноября 2010

Я начинаю делать так, чтобы изображения превращались в маленькие миниатюры.

Но мне нужно регулярное выражение, чтобы проверить, содержит ли оно *.jpg, *.jpeg, .*png, *.gif

Как это можно сделать?

Ответы [ 3 ]

8 голосов
/ 10 ноября 2010
\.(?:jpe?g|png|gif)\b

будет соответствовать, если проверенная строка содержит .jpeg, .png или одну из других альтернатив.

\.(?:jpe?g|png|gif)$

будет соответствовать, если проверенная строка оканчивается на .jpeg, .png и т. д.

2 голосов
/ 10 ноября 2010

Чтобы соответствовать всему имени файла изображений

(^|\s+).+\.(jpe?g|png|gif|tiff)(\s+|$)

* ПРИМЕЧАНИЕ: ^ и $ соответствуют началу и концу строки, так что если вы тянетеимена из какого-то большего текста, удалите эти символы.Добавив опцию конца строки (^ или $) space, он заставляет имя файла появляться в начале / конце строки или , обрамляясь пробелами.Так как в именах файлов допускаются пробелы, это может / не может работать для OP, однако у нас мало информации о контексте, в котором он планирует использовать выражение.


Чтобы предотвратитьимя файла, которое является просто точкой:

^.?[^\.]+\.(jpe?g|png|gif|tiff)$
1 голос
/ 10 ноября 2010

Вам не нужно иметь регулярное выражение для этого ...

Но если вам действительно нужно регулярное выражение, вы можете использовать

(jpeg|png|gif|jpg)$

Это должно получиться.

Я рекомендую вам использовать substr, он будет работать быстрее.

EDIT
Добавить точку для проверки расширения, а не только конца имени (или более длинного расширения).), например myjpg или otherfile.xgif:

\.(png|gif|jpe?g)$
...