gpt4 book ai didi

ruby-on-rails - 提供的正则表达式使用多行 anchor (^ 或 $)

转载 作者:行者123 更新时间:2023-12-04 00:52:21 26 4
gpt4 key购买 nike

我试图编写一种图像验证格式,以确保 url 以 .png、.jpg 或 .gif 结尾。

class Product < ActiveRecord::Base

mount_uploader :image_url

validates :title, :presence => true,
:uniqueness => true
validates :image_url, :presence => true,
:format => {
:with => %r{\.(gif|jpg|png)$}i,
:message => 'must be a URL for GIF, JPG or PNG image.'
}
end

但是当我启动我的服务器时。看到这个:

提供的正则表达式使用多行 anchor (^ 或 $),这可能会带来安全风险。您是要使用\A 和\z,还是忘记添加 :multiline => true 选项?

最佳答案

^$都是线 anchor 。如果用户要传入带有 http://www.foo.com/bar.png\nfoo_bar_baz! 的字符串, 那么你的正则表达式会说输入是有效的,因为它将匹配 .png到换行符,这不是你想要的。

将上面的正则表达式更改为 %r{\.(gif|jpg|png)\z}i反而。 \z是字符串 anchor 的结尾,这是您想要的,而不是行尾 anchor 。

另一个非常相似的问题有一些很好的答案:Difference between \A \z and ^ $ in Ruby regular expressions .

关于ruby-on-rails - 提供的正则表达式使用多行 anchor (^ 或 $),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24919330/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com