2
我是完全新的正則表達式,並一直試圖做到這一點,成功。正則表達式的谷歌推薦人驗證
基本上就是我想要做的是創建一個可以匹配任何谷歌域名例如Google.com,Google.co.uk等
到目前爲止,我有^http://www.google\.com/.*$
一個正則表達式,但僅匹配谷歌。 COM。我如何修改它以允許除com
之外的任何擴展名?
謝謝!
我是完全新的正則表達式,並一直試圖做到這一點,成功。正則表達式的谷歌推薦人驗證
基本上就是我想要做的是創建一個可以匹配任何谷歌域名例如Google.com,Google.co.uk等
到目前爲止,我有^http://www.google\.com/.*$
一個正則表達式,但僅匹配谷歌。 COM。我如何修改它以允許除com
之外的任何擴展名?
謝謝!
你可以使用輪換,但你必須提供要允許所有頂級域名:
^http://www\.google\.(?:com|co\.uk|de|es)/.*$
加入由管分離更多的選擇。或者,你可以讓任何TLD(是否有效或無效)與此:
^http://www\.google\.[a-z.]+/.*$
然而,這也符合像http://www.google.myowndomain.com/
。我不認爲會有任何方法只允許有效的域名沒有全部列出。
順便說一句,如果你想那條斜線,並在年底可選路徑/查詢,更改爲以下之一:
^http://www\.google\.(?:com|co\.uk|de|es)(?:/.*)?$
^http://www\.google\.[a-z.]+(?:/.*)?$
然後你可以走得更遠又邁進了一步,使在www.
可選:
^http://(?:www\.)?google\.(?:com|co\.uk|de|es)(?:/.*)?$
^http://(?:www\.)?google\.[a-z.]+(?:/.*)?$
你看,匹配所有可能的,但有效的網址,對於給定的問題不是一件容易的事,而是一個需要慎重考慮)。
根據您使用的語言,內置URL解析功能可能會有更好的選擇。在PHP的情況下,這將是一個更容易的方法:
$domain = parse_url($urlStr, PHP_URL_HOST);
$isGoogle = preg_match('/^(?:www\.)?google\.[a-z.]+/', $domain);
或者(因爲這無論如何是不完美的,如上文所述),你可以完全放棄正則表達式,做這樣的檢查:
$isGoogle = strpos($domain, 'google.') !== false;
作品完美的男人。我用你的第二個解決方案列出所有的頂級域名太多了。我將承擔使用google.mydomain的風險。 非常感謝! – TheGateKeeper
我被迫使用正則表達式,因爲我在IIS Url Rewrite模塊中使用它。 – TheGateKeeper
@TheGateKeeper沒事,這很公平。無論如何,我會把它留在那裏,如果別人有不同的背景,也會遇到同樣的問題。 –