2

在我的 Windows 窗体应用程序的几个字段中,我要求用户提供 IP 地址或主机名。是否有一个好的正则表达式(正则表达式)来验证输入的值?还是我应该考虑另一种方法?请注意,我希望用户输入FQDN或 IP 地址。

4

4 回答 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

为什么您需要询问 Windows 窗体应用程序的 IP 地址和主机名?如果这些是本地 PC 详细信息,您可以从以下位置获取这些信息:-

1)要获取主机名,可以调用Dns.GetHostName()(见MSDN 参考

2)要获取IP地址,可以通过Dns.GetHostByName()枚举IP地址(见MSDN参考

于 2010-06-17T12:54:51.407 回答
0

如果您想验证格式是否有效,可以使用

bool isValid = Uri.CheckHostName(hostname) == UriHostNameType.Dns;

而不是正则表达式,这可能容易出错。我在预配置应用程序中使用它,用户可以在其中指定将来设置的主机名。为此,Dns.GetHostEntry它不适合,因为它尝试解析主机名,但由于尚未分配,这将失败。

所以这取决于你的需求。如果用户应该输入实际上可以解析的主机名,您可能需要使用Dns.GetHostEntry()IPAddress.TryParse()。如果您只想进行输入验证,请尝试Uri.CheckHostName.

于 2022-01-10T12:00:02.600 回答