2014-10-31 106 views
0

我试图想出一个可以在一组子域中捕获顶级域名(TLD)的正则表达式。所以我有这样的:RegEx匹配字符串开头的符号或字符串本身的开头

/\.?google\.com$/i 

这应该做到以下几点匹配:

sgoogle.com   -- no match 
google.com    -- match 
maps.google.com  -- match 
job_s.map.google.com -- match 
place.google.com.eu -- no match 

这个工作,除了第一个,即sgoogle.com它匹配为好,这是不应该的。

所以我很好奇,有没有办法指定我在哪里做\.?匹配一个点或字符串的开头?

回答

5

你快到了。从字面上看,你的要求是:

(?:^|\.)google\.com$ 

但根据您的需求,这可能会更好(或没有,你告诉我):

\bgoogle\.com$ 

\b意味着字边界

+0

非常好。谢谢!我知道我几乎在那里:) – c00000fd 2014-10-31 21:09:53

+0

至于你的'\ b'建议,不幸的是它不会工作,因为它不会破解,就像'some-google.com'一样 – c00000fd 2014-10-31 21:10:26

+1

好吧,我看到了,我以为你只想匹配像google.com这样的固定域名 – 2014-10-31 21:11:18