天天看点

ios中验证IP地址有效的两种方法

http://www.mkyong.com/regular-expressions/how-to-validate-ip-address-with-regular-expression/(java正则式)

http://stackoverflow.com/questions/5154545/iphone-sdk-how-to-check-if-ip-entered-by-user-is-valid (URL验证)

在IOS中利用正则式则可以验证输入。下面是参考上面文章中java的正则式和URL验证写的。

有两种方法可以使用,希望能给其它需要的人一点参考。

一:利用NSPredicate

+ (BOOL)isValidatIP:(NSString *)ipAddress{
    
    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 *urlTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", urlRegEx];
    return [urlTest evaluateWithObject:ipAddress];

}
           
IP address that match:
1. “1.1.1.1″, 
   “255.255.255.255″,
    ”192.168.1.1″ ,

2. “10.10.1.1″, 
   “132.254.111.10″,
   “26.10.2.10″,

3. “127.0.0.1″
 IP address that doesn’t match:
1. “10.10.10″ – must have 4 “.”

2. “10.10″ – must have 4 “.”

3. “10″ – must have 4 “.”

4. “a.a.a.a” – only digit is allow

5. “10.0.0.a” – only digit is allow

6. “10.10.10.256″ – digit must between [0-255]

7. “222.222.2.999″ – digit must between [0-255]

8. “999.10.10.20″ – digit must between [0-255]

9. “2222.22.22.22″ – digit must between [0-255]

10. “22.2222.22.2″ – digit must between [0-255]
           

正则式判断有很多,没有一一验证,如果有需要,可参考下面文章中的正则式

http://blog.csdn.net/lioncredo/article/details/7628369

二 利用NSRegularExpression和NStextCheckingResult (下面用了别的网页代码,忘了出处了...)

+ (BOOL)isValidatIP:(NSString *)ipAddress{
    
    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])$";
    
    NSError *error;
    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:urlRegEx options:0 error:&error];
    
    if (regex != nil) {
        NSTextCheckingResult *firstMatch=[regex firstMatchInString:ipAddress options:0 range:NSMakeRange(0, [ipAddress length])];
        
        if (firstMatch) {
            NSRange resultRange = [firstMatch rangeAtIndex:0];
            NSString *result=[ipAddress substringWithRange:resultRange];
            //输出结果
            NSLog(@"%@",result);
            return YES;
        }
    }
    
    return NO;
}