私は正規表現にまったく慣れておらず、ほとんど成功せずにこれを実行しようとしています。
基本的に私がやりたいのは、Google.com、Google.co.ukなどの任意のGoogleドメインに一致する正規表現を作成することです。
これまでのところ私は持っていますが^http://www.google\.com/.*$
、これはGoogle.comにのみ一致します。それ以外の拡張を許可するように変更するにはどうすればよいcom
ですか?
ありがとう!
代替を使用することもできますが、許可するすべてのTLDを提供する必要があります。
^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を照合することは簡単な作業ではありませんが、慎重に検討する必要があります;)。
使用している言語によっては、組み込みのURL解析機能を備えたより良いオプションがある場合があります。たとえばPHPの場合、これははるかに簡単なアプローチです。
$domain = parse_url($urlStr, PHP_URL_HOST);
$isGoogle = preg_match('/^(?:www\.)?google\.[a-z.]+/', $domain);
または(上記で概説したように、これはとにかく完璧ではないため)正規表現を完全に放棄して、次のようにチェックを行うことができます。
$isGoogle = strpos($domain, 'google.') !== false;