ruby-on-rails – 如何在rails模型中验证url?
我有url模型有url列,我想验证该列是一个有效的URL,我试过这个:
class User < ActiveRecord::Base validates_format_of :url,:with => URI::regexp(%w(http https)) end 但是当我输入这个网址:http:// ruby??3arabi它接受它,任何想法? 解决方法
我测试过并发现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 选项: > i – 不区分大小写 因此,如果要在模型中进行验证,则应使用此代码: class User < ActiveRecord::Base URL_REGEXP = /^(http|https)://[a-z0-9]+([-.]{1}[a-z0-9]+)*.[a-z]{2,5})?(/.*)?$/ix validates :url,format: { with: URL_REGEXP,message: 'You provided invalid URL' } end 测试: > [1] URI :: regexp(%w(http https)) 使用错误的网址进行测试: > http:// ruby??3arabi – 结果无效 使用正确的网址进行测试: > http://ruby3arabi.com – 结果无效 > [2] URI :: regexp 使用错误的网址进行测试: > http:// ruby??3arabi – 结果有效 使用正确的网址进行测试: > http://ruby3arabi.com – 结果有效 > [3] / ^(http | https):// [a-z0-9]([ – .] {1} [a-z0-9]).[az] {2,5}(:[0 -9] {1,5}) – (/)?$/ IX 使用错误的网址进行测试: > http:// ruby??3arabi – 结果无效 使用正确的网址进行测试: > 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 – 结果有效 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |