2014-10-31 104 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