本文共 2301 字,大约阅读时间需要 7 分钟。
#importBOOL isValidIPv4Address(NSString *ipAddress) { NSString *ipv4Pattern = @ "^\\b( (25[0-5]{2}\\.)| (192\\.168\\.)| (172\\.16[0-9]{1}\\.)| (10\\.24[0-9]{1}\\.)| (10\\.254[0-9]{1}\\.)| (10\\.128[0-9]{1}\\.)| (10\\.0[0-9]{1}\\.)| (10\\.0[0-9]{1}\\.)| (172\\.24[0-9]{1}\\.)| (172\\.16[0-9]{1}\\.)| (172\\.15[0-9]{1}\\.)| (172\\.14[0-9]{1}\\.)| (172\\.13[0-9]{1}\\.)| (172\\.12[0-9]{1}\\.)| (172\\.11[0-9]{1}\\.)| (172\\.10[0-9]{1}\\.)| (172\\.10[0-9]{1}\\.)| (172\\.9[0-9]{1}\\.)| (172\\.8[0-9]{1}\\.)| (172\\.7[0-9]{1}\\.)| (172\\.6[0-9]{1}\\.)| (172\\.5[0-9]{1}\\.)| (172\\.4[0-9]{1}\\.)| (172\\.3[0-9]{1}\\.)| (172\\.2[0-9]{1}\\.)| (172\\.1[0-9]{1}\\.)| (10\\.20[0-9]{1}\\.)| (10\\.19[0-9]{1}\\.)| (10\\.18[0-9]{1}\\.)| ... )$"; NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:ipv4Pattern]; NSMatchResult *matchResult = [regex firstMatchInView:ipAddress]; if (!matchResult) { return NO; } NSString *ipNumber = [matchResult rangeAtIndex:1].substring; NSString *parts = [ipNumber componentsSeparatedBy: @"."]; if ([parts count] != 4) { return NO; } for (NSString *part in parts) { if (!isPartValid(part)) { return NO; } } return YES; } -(BOOL)isPartValid:(NSString *)part { if (part.length != 2) { return NO; } NSString *firstChar = part.firstCharacter; NSString *secondChar = part.secondCharacter; if (!isNumber(firstChar) || !isNumber(secondChar)) { return NO; } return YES; } 在这个算法中,首先使用正则表达式来验证IP地址的格式是否正确。正则表达式包含了所有有效的IPv4地址前缀(如192.168、172.16等),然后通过分割IP地址的各个部分来逐一验证每个部分的有效性。最后,确保有四个有效的八位数字组成的IP地址。
转载地址:http://bjifk.baihongyu.com/