鉴于此:
if (params[:to].to_s =~ (/^r\+.*@site.com$/)) == nil
如何将site.com动态化为:#{SITE_CONFIG['mail_host']}
我试过
if (params[:to].to_s =~ (/^r\+.*@#{SITE_CONFIG['mail_host']}$/)) == nil
哪个不行?想法?
答案 0 :(得分:5)
在ruby中,您可以使用Regexp.new
:
if (params[:to].to_s =~ Regexp.new("^r\\+.*@#{Regexp.quote(SITE_CONFIG['mail_host'])}$")) == nil
答案 1 :(得分:4)
定义“不工作”,正则表达式可以包含插值字符串:
pry(main)> foo = "wat"
=> "wat"
pry(main)> "ohai wat kthxbai" =~ /#{foo}/
=> 5
pry(main)> foo = "nar"
=> "nar"
pry(main)> "ohai wat kthxbai" =~ /#{foo}/
=> nil
pry(main)> /#{foo}/
=> /nar/