Jef*_*ser 13 c# validation domain-name hosts-file
Windows Hosts文件允许您将IP与主机名相关联,该主机名具有比普通Internet域名更大的自由度.我想创建一个函数来确定给定的名称是否是有效的"主机"文件域名.
private static bool IsValidDomainName(string domain)
{
if (String.IsNullOrEmpty(domain) || domain.Length > 255)
{
return false;
}
Uri uri;
if (!Uri.TryCreate("http://" + domain, UriKind.Absolute, out uri))
{
return false;
}
if (!String.Equals(uri.Host, domain, StringComparison.OrdinalIgnoreCase) || !uri.IsWellFormedOriginalString())
{
return false;
}
foreach (string part in uri.Host.Split('.'))
{
if (part.Length > 63)
{
return false;
}
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
它还有一个好处,它应该使用Unicode名称(基本正则表达式失败).
有没有更好/更优雅的方式来做到这一点?
更新:正如Bill所建议的那样,Uri.CheckHostName方法几乎可以满足我的需求,但它不允许Windows允许在"hosts"文件中使用"-test"等主机名.我会特别注意" - "部分,但我担心还有更多特殊情况.
Bil*_*ill 33
怎么样System.Uri.CheckHostName()方法?
private static bool IsValidDomainName(string name)
{
return Uri.CheckHostName(name) != UriHostNameType.Unknown;
}
Run Code Online (Sandbox Code Playgroud)
为什么要自己工作?
| 归档时间: |
|
| 查看次数: |
14477 次 |
| 最近记录: |