2

私は正規表現にまったく慣れておらず、ほとんど成功せずにこれを実行しようとしています。

基本的に私がやりたいのは、Google.com、Google.co.ukなどの任意のGoogleドメインに一致する正規表現を作成することです。

これまでのところ私は持っていますが^http://www.google\.com/.*$、これはGoogle.comにのみ一致します。それ以外の拡張を許可するように変更するにはどうすればよいcomですか?

ありがとう!

4

1 に答える 1

5

代替を使用することもできますが、許可するすべての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;
于 2012-10-24T23:25:39.507 に答える