0

如何使用正则表达式检查字符串是完整域还是子域。

喜欢

abc.com | Full domain
xyz.abc.com | Subdomain
test.co.uk | Full domain
text.test.co.uk/ | Subdomain
4

2 回答 2

2

递归地进行 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。

于 2012-06-25T14:23:28.647 回答
0

使用 Regex 如果无法检查是域还是子域。大多数浏览器使用 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";
于 2016-11-02T22:32:22.853 回答