В модели есть поле
validates :image_file_name, :format => { :with => %r{\.(gif|jpg|jpeg|png)$}i
Для меня это выглядит довольно странно. Я знаю, что это регулярное выражение. Но я бы хотел:
- чтобы знать, что именно это означает. Является ли
%r{value}
равно/value/
? - иметь возможность заменить его обычным оператором регулярного выражения Ruby
/some regex/
или~=
. Является ли это возможным?
ruby-on-rails
ruby
Александр
источник
источник
%r{}x
?/.../x
также игнорирует пробелы. Это не особенное свойство%r
синтаксиса. Все варианты, которые могут последовать,/../
также могут следовать%r{}
.\.
=> содержит точку(gif|jpg|jpeg|png)
=> тогда любое из этих расширений$
=> конец, ничего после негоi
=> регистр не учитываетсяИ это то же самое, что писать
/\.(gif|jpg|jpeg|png)$/i
.источник
%w[1 2 3]
же, как[1, 2, 3]
например.%w[1 2 3]
это не то же самое, что[1, 2, 3]
. Это так же, как['1', '2', '3']
.С
%r
, вы можете использовать любые разделители.Вы можете использовать
%r{}
или%r[]
или%r!!
т. Д.Преимущество использования других разделителей заключается в том, что вам не нужно избегать
/
использования обычного литерала регулярного выражения.источник
это регулярное выражение соответствует всем строкам, которые заканчиваются на .gif, .jpg ...
вы можете заменить его
источник
Это означает, что в
image_file_name
конце ($
) должна стоять точка и одно из значений gif, jpg, jpeg или png.Да
%r{}
означает то же самое,//
но в%r{}
тебе не нужно убегать/
.источник