【问题标题】:iPhone SDK: How to check for IP-Validity?iPhone SDK:如何检查 IP 有效性?
【发布时间】:2011-03-17 22:18:12
【问题描述】:

在我的 iphone 应用程序中,用户可以输入特定的 IP 地址/URL 以连接到他们自己的服务器,我正在尝试检查输入地址的有效性。因此,如果用户输入诸如“1234”之类的内容,应用程序会抛出错误,因为它“看起来”不像 IP 地址或 URL。 现在我正在尝试使用以下方法来完成此操作:

- (BOOL)urlIsValid:(NSString *)address {

NSString *urlRegEx = @"(http|https)://((\\w)*|([0-9]*)|([-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([-|_])*))+";
NSPredicate *urlTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", urlRegEx];
return [urlTest evaluateWithObject:address];
}

我认为它工作得很好,但现在显然即使我输入了正确的 IP 地址,该方法也会返回“NO”。 关于什么可能是错的任何想法? 提前致谢!

【问题讨论】:

    标签: iphone ip-address nspredicate


    【解决方案1】:

    阅读Apple Docs
    尤其是清单 1,其中代码为 if (theConnection)

    【讨论】:

    • 这并没有真正提供任何帮助,因为它没有提供任何有关如何检查输入的 IP 地址是否符合某个标准的文档...
    • 对不起。你刚才说的我不太明白。你所说的IP地址的某些标准是什么意思。你能举一个例子来说明你认为什么是有效的,什么是无效的。
      我只是假设您想检查服务器是否存在
    • 好吧,理论上用户可以在提供的文本字段中输入任何内容作为 IP 地址。因此,用户可以输入完全随机的内容,例如:“bla”或“$$”。在这种情况下,我需要一种方法来检查输入的文本是否实际上是 ip 地址的潜在候选者,然后我可以检查地址后面是否真的有服务器。我希望这更容易理解。
    • 是的,但是我已经知道如何检查服务器是否存在我只是不知道如何检查 IP 地址的有效性
    • 实际上,您要检查两件事。
      1) 检查输入 ip地址的格式。 [你是同一个克里斯吗?][1]
      2) 服务器的存在。这已经回答了

      [1]:stackoverflow.com/questions/5154545/…
    【解决方案2】:

    为此使用NSPredicate 太过分了,并不是它的真正用途。您应该使用 NSRegularExpression 进行正则表达式匹配。但是,至少可以说,使用单个正则表达式完全验证 IP 地址会很麻烦。

    【讨论】:

      【解决方案3】:

      我正在用这种方式验证IP地址,尝试添加http(s)前缀,它应该可以工作。

      NSString *urlRegEx = @"^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])$";
      NSPredicate *ipTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", urlRegEx];
      return [ipTest evaluateWithObject:address];
      

      祝你好运

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-19
        • 1970-01-01
        • 2020-11-15
        • 1970-01-01
        • 1970-01-01
        • 2011-04-17
        相关资源
        最近更新 更多