In einem Modell gibt es ein Feld
validates :image_file_name, :format => { :with => %r{\.(gif|jpg|jpeg|png)$}i
Es sieht ziemlich seltsam für mich aus. Mir ist bewusst, dass dies ein regulärer Ausdruck ist. Aber ich möchte:
- zu wissen, was es genau bedeutet. Ist
%r{value}
gleich/value/
? - in der Lage sein, es durch normalen Ruby-Regex-Operator
/some regex/
oder zu ersetzen~=
. Ist es möglich?
ruby-on-rails
ruby
Alexandre
quelle
quelle
%r{}x
?/.../x
ignoriert auch Leerzeichen. Dies ist keine spezielle Eigenschaft der%r
Syntax. Alle Optionen, die folgen/../
können , können auch folgen%r{}
.\.
=> enthält einen Punkt(gif|jpg|jpeg|png)
=> dann eine dieser Erweiterungen$
=> das Ende, nichts danachi
=> Groß- und Kleinschreibung wird nicht berücksichtigtUnd es ist das gleiche wie beim Schreiben
/\.(gif|jpg|jpeg|png)$/i
.quelle
%w[1 2 3]
ist die gleiche wie[1, 2, 3]
zum Beispiel.%w[1 2 3]
ist nicht dasselbe wie[1, 2, 3]
. Es ist das gleiche wie['1', '2', '3']
.Mit
%r
können Sie beliebige Trennzeichen verwenden.Sie könnten
%r{}
oder%r[]
oder%r!!
etc. verwenden.Der Vorteil der Verwendung anderer Begrenzer besteht darin, dass Sie dem
/
im normalen Regex-Literal verwendeten nicht entkommen müssen.quelle
Dieser reguläre Ausdruck entspricht allen Zeichenfolgen, die mit .gif, .jpg ... enden.
Sie könnten es durch ersetzen
quelle
Dies bedeutet, dass
image_file_name
end ($
) mit einem Punkt und einem von gif, jpg, jpeg oder png enden muss .Ja
%r{}
bedeutet genau das gleiche wie//
aber%r{}
du musst nicht entkommen/
.quelle