我有url模型有url列,我想验证该列是一个有效的URL,我试过这个:
class User < ActiveRecord::Base
validates_format_of :url, :with => URI::regexp(%w(http https))
end
但是当我输入这个网址时:http://ruby3arabi
它接受它,有什么想法吗?
答案 0 :(得分:9)
我测试过并发现 URI :: regexp(%w(http https))或 URI :: regexp 不够好。
故障排除正在使用此正则表达式
<(?:Jan|Feb|Mar|Apr|May|June|July|Aug|Sept|Oct|Nov|Dec)\s\d\d?.+?\d\d\d\d\s\b(?:1[0-2]|0?[1-9]):[0-5][0-9]:[0-5][0-9]\s[AaPp][Mm]\sSGT>\s(<\w+>)
选项:
因此,如果您想在模型中进行验证,则应使用此代码:
/^(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/ix
测试:
[1] URI :: regexp(%w(http https))
使用错误的网址进行测试:
使用正确的网址进行测试:
[2] URI :: regexp
使用错误的网址进行测试:
使用正确的网址进行测试:
[3] /^(http|https)://[a-z0-9]+([-.]{1}[a-z0-9]+) [AZ] {2,5-}。(:[0-9] {1,5})?(/ )$ / IX 强>
使用错误的网址进行测试:
使用正确的网址进行测试:
答案 1 :(得分:4)
答案 2 :(得分:1)
此处有另一个宝石选项:validates_url。
答案 3 :(得分:0)