web-dev-qa-db-ja.com

単純なドメインに一致する正規表現

単純なドメインに一致させようとしています:example.com

しかし、それのすべての組み合わせ。

カバーするためにこれをどのように行うでしょうか:

 https://example.com 
 http://www.example.com 
etc。
13
Andy
^https?://([\w\d]+\.)?example\.com$

コードの使用:

var result = /^https?:\/\/([a-zA-Z\d-]+\.){0,}example\.com$/.test('https://example.com');
// result is either true of false

「http://a.b.example.com」のように一致するように改善しました

11
itea

おそらく、URLのドメイン名の部分を一致させるために使用できます。

/^(?:http(?:s)?:\/\/)?(?:[^\.]+\.)?example\.com$/

次の文字列のいずれかに一致します。

https://example.com
http://www.example.com
http://example.com
https://example.com
www.example.com
example.com

PDATE:ドメイン名の部分だけでなく、完全なURLに一致させるには、次を使用します。

/^(?:http(?:s)?:\/\/)?(?:[^\.]+\.)?example\.com(\/.*)?$     
5
anubhava

私が使用したより一般的な例:

/http(?:s)?:\/\/(?:[\w-]+\.)*([\w-]{1,63})(?:\.(?:\w{3}|\w{2}))(?:$|\/)/i

このソリューションでは、5文字のTLDの正しいラベルが取得されないことに注意してください。例:

http://mylabel.co.uk

'mylabel'ではなく 'co'としてピックアップされますが、

http://mylabel.co

'mylabel'として正しく一致します。この制限があっても、正規表現は私にとって十分でした。

ラベルの63文字の制限はRFC仕様であることに注意してください。これが将来同じ答えを探している人に役立つことを願っています。

4
Daniel

これは、以下のバリエーションに加えて、.com以降のURLと正しく一致します。

https://example.com
https://www.example.com
http://www.example.com
http://example.com
https://example.com
www.example.com
example.com

結果はtrueまたはfalseのいずれかになります

const result = /^(http(s)?(:\/\/))?(www\.)?example\.com(\/.*)?$/.test(value); 
2
K20GH

以下はJavaで動作します。

^(http:|https:|)[/][/]([^/]+[.])*example.com$

テストケースと一致し、は次のようなケースと一致しません

http://www.google.com/http://example.com

2
Brad Parks