gpt4 book ai didi

ruby-on-rails - 如何验证 Rails 模型中的 url?

转载 作者:数据小太阳 更新时间:2023-10-29 07:21:20 25 4
gpt4 key购买 nike

我的 Url 模型有 url 列,我想验证该列是一个有效的 url,我已经尝试过这个:

class User < ActiveRecord::Base
validates_format_of :url, :with => URI::regexp(%w(http https))
end

但是当我输入这个 url 时:http://ruby3arabi 它被接受了,有什么想法吗?

最佳答案

我测试发现 URI::regexp(%w(http https))URI::regexp 不够好。

故障排除是使用这个正则表达式

/\A(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?\z/ix

选项:

  • i - 不区分大小写
  • x - 忽略正则表达式中的空格
  • \A - 正则表达式的开始(与通常情况下的 ^ 相比,Rails 安全地使用 \A)
  • \z - 正则表达式的结尾(与通常情况下的 $ 相比,Rails 安全地使用 \z)

所以如果你想在模型中验证,你应该改用这个:

class User < ApplicationRecord
URL_REGEXP = /\A(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?\z/ix
validates :url, format: { with: URL_REGEXP, message: 'You provided invalid URL' }
end

测试:

  • [1] URI::regexp(%w(http https))

    使用错误的 url 进行测试:

    • http://ruby3arabi - 结果无效
    • http://http://ruby3arabi.com - 结果无效
    • http://- 结果无效

使用正确的 url 进行测试:

使用正确的 url 进行测试:

使用正确的 url 进行测试:

信用:谢谢 noman tayyab ,引用:Active Record Validations用于 \A\z 情况下的更新

关于ruby-on-rails - 如何验证 Rails 模型中的 url?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34561083/

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