C# 通过C验证用户输入的IP地址或主机名#

C# 通过C验证用户输入的IP地址或主机名#,c#,regex,winforms,data-entry,C#,Regex,Winforms,Data Entry,在Windows窗体应用程序的几个字段中,我要求用户提供IP地址或主机名。是否有一个好的正则表达式(regex)来验证输入的值?或者我应该考虑另一种方法吗?请注意,我更希望用户输入一个或一个IP地址。为了将来验证您的应用程序,我建议只使用IPAddress.TryParse()来确定输入是否为IP地址 检查“有效”主机名更加困难,这也是因为您没有指定主机名是否必须存在。如果是这样,最简单的方法就是使用Dns.GetHostEntry()查看是否会产生结果。根据您给出的描述,您无法获得更准确的验证

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

为了将来验证您的应用程序,我建议只使用
IPAddress.TryParse()
来确定输入是否为IP地址


检查“有效”主机名更加困难,这也是因为您没有指定主机名是否必须存在。如果是这样,最简单的方法就是使用
Dns.GetHostEntry()
查看是否会产生结果。根据您给出的描述,您无法获得更准确的验证。

为什么需要为Windows窗体应用程序请求IP地址和主机名?如果这些是本地电脑的详细信息,您可以从以下网站获取:-

1) 要获取主机名,可以调用Dns.GetHostName()(请参阅)


< P > 2)为了获得IP地址,可以通过<强> dn.gthOthByNyMe()>枚举(参见)

尝试调用IP地址,如果失败,尝试

不要忘记考虑IPv6地址的含义,如果您希望这个应用程序继续使用JJNGEY的可能复制,并不意味着重新发布。我会查一查,如果我查了,我会道歉的。Dave-我自己也在关注这一方面,并意识到我的应用程序目前可能走错了方向,因为它目前只基于IPv4。我很担心这一点。补充说:“还是有另一个我应该考虑的方法?”因为你接受了非正则表达式的方法。这也可以避免将此问题标记为。如果用户键入主机,然后单击按钮以验证主机条目,那么Dns.GetHostEntry()是否有用…就像Active Directory相关字段上的“检查名称”按钮一样?当然,我在多个工具中看到过这种情况,首先想到的是IIS SMTP服务器配置(设置服务器的FQDN时)。请参阅以区分IPv4和IPv6地址。另请参阅。数据不会用于在本地系统上进行测试。它将用于确定SSH服务器是否存在,以及用户输入的数据是否真实(如blahblahblah==错误,66.234.34.23==正确)。这个问题完全是针对远程主机的。@Thakid,感谢您的澄清。在说明中,我认为您仍然可以使用Dns.GetHostByName(主机名)来验证主机名是否有效。可以使用Dns.GetHostByAddress()的IP地址同上检查地址。Dns.GetHostByName和Dns.GetHostByAddress都已标记为过时。