Dans un modèle, il y a un champ
validates :image_file_name, :format => { :with => %r{\.(gif|jpg|jpeg|png)$}i
Cela me semble assez étrange. Je suis conscient qu'il s'agit d'une expression régulière. Mais je voudrais:
- pour savoir ce que cela signifie exactement. Est
%r{value}
égal à/value/
? - être en mesure de le remplacer par l'opérateur normal de regex Ruby
/some regex/
ou~=
. C'est possible?
ruby-on-rails
ruby
Alexandre
la source
la source
%r{}x
?/.../x
ignore également les espaces. Ce n'est pas une propriété spéciale de la%r
syntaxe. Toutes les options qui peuvent suivre/../
peuvent également suivre%r{}
.\.
=> contient un point(gif|jpg|jpeg|png)
=> alors, soit l'une de ces extensions$
=> la fin, rien aprèsi
=> insensible à la casseEt c'est la même chose que l'écriture
/\.(gif|jpg|jpeg|png)$/i
.la source
%w[1 2 3]
c'est le même que[1, 2, 3]
par exemple.%w[1 2 3]
n'est pas la même chose que[1, 2, 3]
. C'est la même chose que['1', '2', '3']
.Avec
%r
, vous pouvez utiliser n'importe quel délimiteur.Vous pouvez utiliser
%r{}
ou%r[]
ou%r!!
etc.L'avantage d'utiliser d'autres délimiteurs est que vous n'avez pas besoin d'échapper au
/
littéral utilisé dans une expression régulière normale.la source
cette expression rationnelle correspond à toutes les chaînes qui se terminent par .gif, .jpg ...
tu pourrais le remplacer par
la source
Cela signifie que cela
image_file_name
doit se terminer ($
) par un point et l'un des formats gif, jpg, jpeg ou png.Oui
%r{}
signifie exactement la même chose que//
mais en%r{}
vous n'avez pas besoin de vous échapper/
.la source