有人能告诉我以下代码中:with行的\.和i是用来做什么的吗? validates :image_url, allow_blank: true, format: { with: %r{\.(gif|jpg|png)\Z}i, message: 'must be a URL for GIF, JPG or PNG file.' }
在Ruby中,您可以使用%r{...}字面量创建正则表达式。以下是元字符(、)、[、]、{、}、.、?、+、* 。当它们出现在模式中时,它们具有特定的含义。要匹配它们,必须使用反斜杠进行转义。 i用于不区分大小写匹配。
%r{}用于正则表达式。 \.寻找字面上的字符.。你需要使用\进行转义,因为仅使用.意味着完全不同的事情(任何字符都匹配)。 i用于不区分大小写的搜索。 实际上,您的正则表达式是匹配以.gif、.jpg或.png结尾的任何内容。由于不区分大小写的搜索,这些也可以是类似于.GiF的东西。