簡體   English   中英

如何使用正則表達式檢查私有/本地IP地址

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM