如何使用正则表达式检查 private/local IP 地址
How to check private/local IP address by using regular expression
希望你们一切都好。我正在构建一个 IOS 应用程序,如果用户在文本字段中键入 private/local IP 地址,我会在其中警告用户。
我在互联网上搜索并发现它是在 Android 应用程序中使用正则表达式完成的:
Java: (127.0.0.1)|(192.168.$) | (172.1[6-9].$) | (172.2[0-9].$) | (172.3[0-1].$) | (10.*$)
我想要 IOS 应用程序的相同正则表达式,但我不知道如何编码。
我在互联网上搜索并找到
Private IP Address Identifier in Regular Expression
但我听不懂。我只知道一些objective-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*([A-Z]{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 支持,所以这是我的答案。另外,请注意 iOS 正则表达式应该像 Antoine 指出的那样转义反斜杠。
这是 NSString 的类别,如果它是本地/私有 IP 地址,则 returns 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;
}
买家注意:我只对此进行了有限的测试。
希望你们一切都好。我正在构建一个 IOS 应用程序,如果用户在文本字段中键入 private/local IP 地址,我会在其中警告用户。 我在互联网上搜索并发现它是在 Android 应用程序中使用正则表达式完成的: Java: (127.0.0.1)|(192.168.$) | (172.1[6-9].$) | (172.2[0-9].$) | (172.3[0-1].$) | (10.*$)
我想要 IOS 应用程序的相同正则表达式,但我不知道如何编码。 我在互联网上搜索并找到 Private IP Address Identifier in Regular Expression 但我听不懂。我只知道一些objective-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*([A-Z]{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 支持,所以这是我的答案。另外,请注意 iOS 正则表达式应该像 Antoine 指出的那样转义反斜杠。
这是 NSString 的类别,如果它是本地/私有 IP 地址,则 returns 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;
}
买家注意:我只对此进行了有限的测试。