iPhone SDK:如何检查IP有效性?

时间:2011-03-17 22:18:13

标签: iphone ip-address nspredicate

在我的iphone应用程序中,用户可以输入特定的ip-address / URL连接到他们自己的服务器,我正在尝试检查输入的地址的有效性。因此,如果用户输入类似“1234”的内容,则应用程序会抛出错误,因为它不会“看起来”像ip-address或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-address,该方法也会返回“NO”。 关于什么可能出错的任何想法? 提前谢谢!

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我用这种方式验证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];
祝你好运