加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – (rails)使用regexp验证URL帮助

发布时间:2020-12-17 03:33:43 所属栏目:百科 来源:网络整理
导读:我正在使用以下内容来验证URL是否有效格式化: validates_format_of :website,:with = URI::regexp(%w(http https)) 但是,当URL不以http://或https://开头时,它不起作用.是否有一些类似的方法来验证带有URI :: regexp(或URI)的URL,并使其包含不以http://
我正在使用以下内容来验证URL是否有效格式化:

validates_format_of :website,:with => URI::regexp(%w(http https))

但是,当URL不以http://或https://开头时,它不起作用.是否有一些类似的方法来验证带有URI :: regexp(或URI)的URL,并使其包含不以http://开头的有效URL? (例如,www.google.com和http://www.google.com一样有效)

解决方法

This post on Daring Fireball提供了强大的正则表达式:

b(([w-]+://?|www[.])[^s()<>]+(?:([wd]+)|([^[:punct:]s]|/)))

A more recent post对其进行了改进(为了清楚起见,在此处添加了N.B.换行符和缩进;有关更加扩展的版本的说明,请参阅帖子):

(?i)b((?:[a-z][w-]+:(?:/{1,3}|[a-z0-9%])|
           wwwd{0,3}[.]|
           [a-z0-9.-]+[.][a-z]{2,4}/)
       (?:[^s()<>]+|
          (([^s()<>]+|
          (([^s()<>]+)))*))+
       (?:(([^s()<>]+|
          (([^s()<>]+)))*)|
          [^s`!()[]{};:'".,<>???“”‘’]))

从我的测试中,URL :: regexp在URI的定义中是松散的(虽然它确实需要http …).

如有必要,您可以使用虚拟属性或before_save过滤器将http://附加到您的URL.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读