#regex
#регулярное выражение
Вопрос:
Я хочу избежать .. для файлов изображений. В моих проверках регулярное выражение гласит:
%r{.(gif|png|jpg)$}i
для URL-адресов изображений. Проблема в том, что fred..png также передаст вместо распознавания double ..
Спасибо за помощь.
Комментарии:
1. На каком языке это? Ruby?
Ответ №1:
Чтобы предотвратить описанный вами случай, который был бы только для двойной точки прямо перед расширением:
%r{[^.].(gif|png|jpg)$}i
Редактировать: Если вы хотите, чтобы оно было таким, которого ..
нет нигде в строке, было бы проще всего сделать это в коде (псевдо: if regex.matches(filename) and '..' not in filename
).
Комментарии:
1. Вы пробовали это? Не работает. Потому что он видит
.
и останавливается. Вот почему вы должны использовать поиск сзади.2. Моя ошибка, рассматривал пустые имена.
3. Я думаю, это зависит от OP, хочет ли он, чтобы «.. gif» был действительным или нет. Хотя звучит не так.
Ответ №2:
Может быть, что-то вроде приведенного ниже?
%r{.(?<!..)(gif|png|jpg)$}i
Отрицательный просмотр назад, чтобы увидеть ..
, не происходит