Last active
January 29, 2018 14:08
-
-
Save batosai/4128581 to your computer and use it in GitHub Desktop.
NSString validator
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// NSString+Validator.h | |
// IRedmine | |
// | |
// Created by Jeremy on 29/08/12. | |
// Copyright (c) 2012 opsone. All rights reserved. | |
// | |
#import <Foundation/Foundation.h> | |
@interface NSString (Validator) | |
- (BOOL)isEmail; | |
- (BOOL)isPhoneNumber; | |
- (BOOL)isDigit; | |
- (BOOL)isNumeric; | |
- (BOOL)isUrl; | |
- (BOOL)isLengthMin:(NSUInteger)length; | |
- (BOOL)isLengthMax:(NSUInteger)length; | |
- (BOOL)isLengthMin:(NSUInteger)min andMax:(NSUInteger)max; | |
- (BOOL)isEmpty; | |
- (NSString *)toSlug; | |
@end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// NSString+Validator.m | |
// IRedmine | |
// | |
// Created by Jeremy on 29/08/12. | |
// Copyright (c) 2012 opsone. All rights reserved. | |
// | |
#import "NSString+Validator.h" | |
@implementation NSString (Validator) | |
- (BOOL)isEmail { | |
NSString *regex = @"[a-zA-Z0-9.\\-_]{2,32}@[a-zA-Z0-9.\\-_]{2,32}\\.[A-Za-z]{2,4}"; | |
NSPredicate *regExPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex]; | |
return [regExPredicate evaluateWithObject:self]; | |
} | |
- (BOOL)isPhoneNumber { | |
NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeLink|NSTextCheckingTypePhoneNumber error:nil]; | |
return [detector numberOfMatchesInString:self options:0 range:NSMakeRange(0, [self length])]; | |
} | |
- (BOOL)isDigit { | |
NSCharacterSet *alphaNums = [NSCharacterSet decimalDigitCharacterSet]; | |
NSCharacterSet *inStringSet = [NSCharacterSet characterSetWithCharactersInString:self]; | |
return [alphaNums isSupersetOfSet:inStringSet]; | |
} | |
- (BOOL)isNumeric { | |
NSString *regex = @"([0-9])+((\\.|,)([0-9])+)?"; | |
NSPredicate *regExPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex]; | |
return [regExPredicate evaluateWithObject:self]; | |
} | |
- (BOOL)isUrl { | |
NSString *regex = @"(http|https)://((\\w)*|([0-9]*)|([-|_])*)+([\\.|/](([0-9a-zA-Z_-]*)*|([0-9]*)|([-|_])*))+"; | |
NSPredicate *regExPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex]; | |
return [regExPredicate evaluateWithObject:self]; | |
} | |
- (BOOL)isLengthMin:(NSUInteger)length { | |
return (self.length >= length); | |
} | |
- (BOOL)isLengthMax:(NSUInteger)length { | |
return (self.length <= length); | |
} | |
- (BOOL)isLengthMin:(NSUInteger)min andMax:(NSUInteger)max { | |
return ([self isLengthMin:min] && [self isLengthMax:max]); | |
} | |
- (BOOL)isEmpty { | |
return (!self.length); | |
} | |
- (NSString *)toSlug { | |
NSString *value = [self lowercaseString]; | |
NSCharacterSet *doNotWant = [NSCharacterSet characterSetWithCharactersInString:@"/:=.;,!?\\$#@&§%£¥€*^¨°'\"{}()[]<>+"]; | |
value = [[value componentsSeparatedByCharactersInSet: doNotWant] componentsJoinedByString: @""]; | |
doNotWant = [NSCharacterSet characterSetWithCharactersInString:@" "]; | |
value = [[value componentsSeparatedByCharactersInSet: doNotWant] componentsJoinedByString: @"-"]; | |
doNotWant = [NSCharacterSet characterSetWithCharactersInString:@"àáâãäå"]; | |
value = [[value componentsSeparatedByCharactersInSet: doNotWant] componentsJoinedByString: @"a"]; | |
doNotWant = [NSCharacterSet characterSetWithCharactersInString:@"èéêë"]; | |
value = [[value componentsSeparatedByCharactersInSet: doNotWant] componentsJoinedByString: @"e"]; | |
doNotWant = [NSCharacterSet characterSetWithCharactersInString:@"òóôõöø"]; | |
value = [[value componentsSeparatedByCharactersInSet: doNotWant] componentsJoinedByString: @"o"]; | |
doNotWant = [NSCharacterSet characterSetWithCharactersInString:@"ìíîï"]; | |
value = [[value componentsSeparatedByCharactersInSet: doNotWant] componentsJoinedByString: @"i"]; | |
doNotWant = [NSCharacterSet characterSetWithCharactersInString:@"ùúûü"]; | |
value = [[value componentsSeparatedByCharactersInSet: doNotWant] componentsJoinedByString: @"u"]; | |
doNotWant = [NSCharacterSet characterSetWithCharactersInString:@"ÿ"]; | |
value = [[value componentsSeparatedByCharactersInSet: doNotWant] componentsJoinedByString: @"y"]; | |
doNotWant = [NSCharacterSet characterSetWithCharactersInString:@"ñ"]; | |
value = [[value componentsSeparatedByCharactersInSet: doNotWant] componentsJoinedByString: @"n"]; | |
doNotWant = [NSCharacterSet characterSetWithCharactersInString:@"ç"]; | |
value = [[value componentsSeparatedByCharactersInSet: doNotWant] componentsJoinedByString: @"c"]; | |
return value; | |
} | |
@end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment