NSCharacterSet* uppercaseCharSet = [NSCharacterSet uppercaseLetterCharacterSet];
if ([theString rangeOfCharacterFromSet:uppercaseCharSet].location == NSNotFound)
return NO;
NSCharacterSet* lowercaseCharSet = [NSCharacterSet lowercaseLetterCharacterSet];
if ([theString rangeOfCharacterFromSet:lowercaseCharSet].location == NSNotFound)
return NO;
NSCharacterSet* digitsCharSet = [NSCharacterSet decimalDigitCharacterSet];
if ([theString rangeOfCharacterFromSet:digitsCharSet].location == NSNotFound)
return NO;
return YES;
This method is Unicode-aware. If by "Upper case charecter" you just mean A-Z, use
NSCharacterSet* uppercaseCharSet =
[NSCharacterSet characterSetWithRange:NSMakeRange('A', 26)];
and similar for the other two.