Dalam model ada bidang
validates :image_file_name, :format => { :with => %r{\.(gif|jpg|jpeg|png)$}i
Terlihat aneh bagi saya. Saya sadar bahwa ini adalah ekspresi reguler. Tapi saya ingin:
- untuk mengetahui apa artinya sebenarnya. Apakah
%r{value}
sama dengan/value/
? - dapat menggantinya dengan operator regex Ruby normal
/some regex/
atau~=
. Apa itu mungkin?
ruby-on-rails
ruby
Alexandre
sumber
sumber
%r{}x
?/.../x
juga mengabaikan spasi putih. Ini bukan properti%r
sintaksis khusus. Semua opsi yang bisa diikuti/../
juga bisa mengikuti%r{}
.\.
=> mengandung titik(gif|jpg|jpeg|png)
=> lalu, salah satu dari ekstensi ini$
=> akhirnya, tidak ada setelahnyai
=> case-sensitiveDan itu sama dengan menulis
/\.(gif|jpg|jpeg|png)$/i
.sumber
%w[1 2 3]
sama dengan[1, 2, 3]
misalnya.%w[1 2 3]
adalah tidak sama dengan[1, 2, 3]
. Itu sama dengan['1', '2', '3']
.Dengan
%r
, Anda bisa menggunakan pembatas apa pun.Anda bisa menggunakan
%r{}
atau%r[]
atau lainnya%r!!
.Manfaat menggunakan pembatas lain adalah Anda tidak perlu melarikan diri dari yang
/
digunakan dalam regex literal normal.sumber
regexp ini cocok dengan semua string yang diakhiri dengan .gif, .jpg ...
Anda bisa menggantinya dengan
sumber
Ini berarti bahwa
image_file_name
harus diakhiri ($
) dengan titik dan salah satu dari gif, jpg, jpeg atau png.Ya
%r{}
berarti persis sama//
tetapi di dalam%r{}
kamu tidak perlu melarikan diri/
.sumber