単純なドメインに一致させようとしています:example.com
しかし、それのすべての組み合わせ。
カバーするためにこれをどのように行うでしょうか:
https://example.com http://www.example.com etc。
^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」のように一致するように改善しました
おそらく、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(\/.*)?$
私が使用したより一般的な例:
/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仕様であることに注意してください。これが将来同じ答えを探している人に役立つことを願っています。
これは、以下のバリエーションに加えて、.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);
以下はJavaで動作します。
^(http:|https:|)[/][/]([^/]+[.])*example.com$
テストケースと一致し、は次のようなケースと一致しません