检查NSString是否包含特殊字符和数字

jyo*_*thi 8 string cocoa cocoa-touch objective-c nsstring

我需要检查一个字符串是否包含一个大写字母,一个小写字母,一个整数和一个特殊字符.我该如何检查?

Mau*_*lik 14

没有任何额外的框架:

NSCharacterSet * set = [[NSCharacterSet characterSetWithCharactersInString:@"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"] invertedSet];

if ([aString rangeOfCharacterFromSet:set].location != NSNotFound) {
    NSLog(@"This string contains illegal characters.");
}
Run Code Online (Sandbox Code Playgroud)

您也可以使用正则表达式(此语法来自RegexKitLite:http://regexkit.sourceforge.net ):

if ([aString isMatchedByRegex:@"[^a-zA-Z0-9]"]) {
    NSLog(@"This string contains illegal characters.");
}
Run Code Online (Sandbox Code Playgroud)

  • 参考http://stackoverflow.com/questions/2297102/check-nsstring-for-special-characters/2298009#2298009 (2认同)

Adi*_*hya 9

发现稍微好一点的实现.对Ameesh答案的改进

- (BOOL)isValidString:(NSString *)string
{
    return [string rangeOfCharacterFromSet:[NSCharacterSet uppercaseLetterCharacterSet]].location != NSNotFound &&
    [string rangeOfCharacterFromSet:[NSCharacterSet lowercaseLetterCharacterSet]].location != NSNotFound &&
    [string rangeOfCharacterFromSet:[NSCharacterSet decimalDigitCharacterSet]].location != NSNotFound;
}
Run Code Online (Sandbox Code Playgroud)