在我的 Windows 窗体应用程序的几个字段中,我要求用户提供 IP 地址或主机名。是否有一个好的正则表达式(正则表达式)来验证输入的值?还是我应该考虑另一种方法?请注意,我希望用户输入FQDN或 IP 地址。
问问题
1957 次
4 回答
2
为了使您的应用程序面向未来,我建议仅使用IPAddress.TryParse()
来确定输入是否为 IP 地址。
检查“有效”主机名更加困难,还因为您没有指定主机名是否必须存在。如果是这样,最简单的方法是使用它Dns.GetHostEntry()
来查看是否会产生结果。根据您提供的描述,您无法获得更准确的验证。
于 2010-06-17T12:42:31.623 回答
1
尝试调用IPAddress.TryParse,如果失败则尝试Dns.GetHostByName
于 2010-06-17T12:58:59.850 回答
0
如果您想验证格式是否有效,可以使用
bool isValid = Uri.CheckHostName(hostname) == UriHostNameType.Dns;
而不是正则表达式,这可能容易出错。我在预配置应用程序中使用它,用户可以在其中指定将来设置的主机名。为此,Dns.GetHostEntry
它不适合,因为它尝试解析主机名,但由于尚未分配,这将失败。
所以这取决于你的需求。如果用户应该输入实际上可以解析的主机名,您可能需要使用Dns.GetHostEntry()
或IPAddress.TryParse()
。如果您只想进行输入验证,请尝试Uri.CheckHostName
.
于 2022-01-10T12:00:02.600 回答