2016-03-06 68 views
0

在Rails应用程序中,主机请求需要在第二级或第三级域请求上进行过滤。过滤第二级和第三级主机请求

目前,我可以筛选或者与前两个语句之一,但不能同时具有以下的正则表达式

@site ||= if match = request.host.match(/.*?([^.]+\.[^.]+$)/) 
@site ||= if match = request.host.match(/.*?([^.]+\.[^.]+\.[^.]+$)/) 
    domain = match[1] 
    Site.find_by_host(domain) 

如何才能二级或第三级的要求得到妥善处理?

+0

请更新您的文章样本主机字符串,包括预期输出。 – Saleem

+0

假设'3.domain.com'和'domain.com'具有'3.domain.com,first'和'domain.com,第二'条目的Site类将搜索这些字符串中的每一个,并返回特定的结果每个 – Jerome

+0

我还是很困惑。什么是具体结果?这就是我要求的。你想捕获domain.com,mail.domain.com等,但不是sub.mail.domain.com? – Saleem

回答

1

好吧,如果你想捕捉第二和第三级域名,并拒绝一切,你可以试试这个正则表达式:

/(?i)((?<=\s|^)(?:[a-z0-9\-]+\.){1,2}[a-z0-9]+)(?=(?:[\s\/:])|$)/ 

见现场演示在rubular.com

输入:

google.com facebook.com 
docs.google.com 
search.google.com/list 
www.microsoft.com 
foo.bar.google.com 

输出:

google.com facebook.com  | match 
docs.google.com    | match 
search.google.com/list  | match 
www.microsoft.com   | match 
foo.bar.google.com   | no match