正規表現を使用して、文字列がフル ドメインまたはサブドメインであることを確認するにはどうすればよいですか。
お気に入り
abc.com | Full domain
xyz.abc.com | Subdomain
test.co.uk | Full domain
text.test.co.uk/ | Subdomain
一度に左側から 1 つのセクションを削除しながら、DNS ルックアップを再帰的に実行します。
サブドメイン
xyz.abc.com //DNS check PASS
abc.com //DNS check PASS
ドメイン
xxx.com.hk //DNS check PASS
com.hk //DNS check FAIL
別の理由でネームサーバー/DNS 解決が失敗する場合、それがサブドメインかどうかを確認する別の方法は、IANA の TLD (Top-Level Domain) Registry Hereを使用することです。
(慎重に使用してください)
com.com
、com.google.com
、および名前に TLD を使用する他のいくつかの URL のようないくつかのケースがあります。
正規表現で確認できない場合は、ドメインまたはサブドメインです。この問題に最も多く使用されているブラウザは、Mozilla のプロジェクト - PublicSuffix です。これは、TLD の管理リストです。
次の nuget パッケージを使用できます。(インストール パッケージ Nager.PublicSuffix) https://www.nuget.org/packages/Nager.PublicSuffix/
例:
var domainParser = new DomainParser();
var data = await domainParser.LoadDataAsync();
var tldRules = domainParser.ParseRules(data);
domainParser.AddRules(tldRules);
var domainName = domainParser.Get("sub.test.co.uk");
//domainName.Domain = "test";
//domainName.Hostname = "sub.test.co.uk";
//domainName.RegistrableDomain = "test.co.uk";
//domainName.SubDomain = "sub";
//domainName.TLD = "co.uk";