在rails上的ruby中使用regexp验证格式

时间:2011-12-05 04:21:50

标签: ruby-on-rails regex validation format

我的要求:   要添加验证以确保SITEMAP_URL关键字始终包含在search_engines.url中,并且格式为http://www.example.com/

class SearchEngine < ActiveRecord::Base

  validates :name, :ping_url, :uniqueness => true, :presence => true
  validates :ping_url, :format => {:with => /\=SITEMAP_URL$/}, :presence => true

end

我写的验证是否正确。

1 个答案:

答案 0 :(得分:2)

验证看起来很好。

除非您希望/\=SITEMAP_URL$/进行插值,否则不会。

它只匹配像;

这样的字符串
  • “http://some.com?q=SITEMAP_URL”

这真的是你的意思吗?

如果你有

SITEMAP_URL = "/sitemap.xml"

然后你可以说

SITEMAP_REGEXP = /\=#{SITEMAP_URL}/

但这会解释“。”任何角色。

所以你需要使用Regexp.escape

非常

Regexp.new(Regexp.escape("=#{SITEMAP_URL}")+"$")

应该做你想做的事。