如何使用正则表达式检查字符串是完整域还是子域。
喜欢
abc.com | Full domain
xyz.abc.com | Subdomain
test.co.uk | Full domain
text.test.co.uk/ | Subdomain
答案 0 :(得分: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的顶级域名注册管理机构Here。
(有效使用)
有几种情况,例如com.com
,com.google.com
,以及其名称使用TLD的其他几个网址。
答案 1 :(得分:0)
如果无法检查正则表达式是域还是子域。大多数浏览器都使用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";