当前位置:  开发笔记 > 后端 > 正文

如何在rails模型中验证url?

如何解决《如何在rails模型中验证url?》经验,为你挑选了1个好方法。

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

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

但是当我输入这个网址时:http://ruby3arabi它接受它,任何想法?



1> Komsun K...:

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

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

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

选项:

我不区分大小写

x - 忽略正则表达式中的空格

因此,如果要在模型中进行验证,则应使用此代码:

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

测试:

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

使用错误的网址进行测试:

http:// ruby​​3arabi - 结果无效

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

http:// - 结果无效

使用正确的网址进行测试:

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

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

https://www.ruby3arabi.com - 结果无效

https://www.ruby3arabi.com/article/1 - 结果无效

https://www.ruby3arabi.com/websites/58e212ff6d275e4bf9000000?locale=en - 结果无效

[2] URI :: regexp

使用错误的网址进行测试:

http:// ruby​​3arabi - 结果有效

http:// http://ruby3arabi.com - 结果有效

http:// - 结果有效

使用正确的网址进行测试:

http://ruby3arabi.com - 结果有效

http://www.ruby3arabi.com - 结果有效

https://www.ruby3arabi.com - 结果有效

https://www.ruby3arabi.com/article/1 - 结果有效

https://www.ruby3arabi.com/websites/58e212ff6d275e4bf9000000?locale=en - 结果有效

[3] /^(http|https)://[a-z0-9]+([-.]{1}[a-z0-9]+).[az ] {2,5}(:[ 0-9] {1,5})?(/.)?$/ix

使用错误的网址进行测试:

http:// ruby​​3arabi - 结果无效

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

http:// - 结果无效

使用正确的网址进行测试:

http://ruby3arabi.com - 结果有效

http://www.ruby3arabi.com - 结果有效

https://www.ruby3arabi.com - 结果有效

https://www.ruby3arabi.com/article/1 - 结果有效

https://www.ruby3arabi.com/websites/58e212ff6d275e4bf9000000?locale=en - 结果有效


在Regex上面会在rails 4中抛出一个参数错误(多行表达式的安全性问题).替代方法是使用\ A表示字符串的开头,使用\ z表示结尾.
推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有