![](/img/trans.png)
[英]How to check whether a device in local WiFi network is connected or not using it's IP address?
[英]How to check private/local IP address by using regular expression
希望你们所有人都没事。 我正在构建一个IOS应用程序,我在其中警告用户是否在文本字段中键入了私有/本地IP地址。 我在互联网上搜索过,发现它是使用正则表达式在Android应用程序中完成的:Java:(127.0.0.1)|(192.168。$)| (172.1 [6-9]。$)| (172.2 [0-9]。$)| (172.3 [0-1]。$)| (10。* $)
我想要IOS应用程序的相同正则表达式,但我不知道如何编码它。 我在互联网上搜索并在正则表达式中找到了私有IP地址标识符但我无法理解它。 我只知道一些目标-c。 有人可以帮我这方面。
好吧,伙计们,我想我已经通过代码解决了这个问题。
-(void)CheckIP { NSError *error = NULL; NSString *pattern = @"(127.0.0.1)|(192.168.$)|(172.1[6-9].$)|(172.2[0-9].$)|(172.3[0-1].$)|(10.*$)"; // "[a-zA-Z]+[,]\\\\s*([AZ]{2})"; NSString *string = self.tfExternalHost.text; NSRange range = NSMakeRange(0, string.length); NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:&error]; NSArray *matches = [regex matchesInString:string options:NSMatchingProgress range:range]; NSLog(@" Found Match %@", matches); }
建议我是否可以改进上面的代码。
我已经解决了这个问题。
-(BOOL)CheckIPAddress
{
// this code is to check either user entered local/private ip-address
NSError *error = NULL;
NSString *pattern = @"((127\.)|(10\.)|(172\.1[6-9]\.)|(172\.2[0-9]\.)|(172\.3[0-1]\.)|(192\.168\.))";
NSString *string = self.tfExternalHost.text;
NSRange range = NSMakeRange(0, string.length);
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:&error];
NSArray *matches = [regex matchesInString:string options:NSMatchingProgress range:range];
if (matches.count>0) {
UIAlertView *simpleAlert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Warning", nil) message:NSLocalizedString(@"Please provide valid external IP address.", nil) delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[simpleAlert show];
return true;
}
return false;
}
我也需要IPv6支持,所以这是我的答案。 此外,请注意,正如Antoine指出的那样,iOS正则表达式应该有反转斜杠。
这是NSString的一个类别,如果它是本地/私有IP地址,则返回YES。 请注意,此代码假定字符串是有效的IP地址(即,它将匹配192.168.chocolate.sundae)
- (BOOL)isPrivateIPAddress {
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(^127\\.)|(^192\\.168\\.)|(^10\\.)|(^172\\.1[6-9]\\.)|(^172\\.2[0-9]\\.)|(^172\\.3[0-1]\\.)|(^::1$)|(^[fF][cCdD])" options:0 error:nil];
NSArray *matches = [regex matchesInString:self options:0 range:NSMakeRange(0, self.length)];
if (matches.count > 0)
return YES;
return NO;
}
买家要小心:我只对此进行了有限的测试。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.