我有一个NSString
用户输入的UITextField
值,在这里我需要验证字符串是否只包含类似的值
'a to z' , 'A to z' , '1 to 9'.
我不想要除这些以外的任何其他字符...请帮帮我...我NSNumberFormatter
对数字和NSScanner
字符串都有用,但是如何一次验证两者。
我有一个NSString
用户输入的UITextField
值,在这里我需要验证字符串是否只包含类似的值
'a to z' , 'A to z' , '1 to 9'.
我不想要除这些以外的任何其他字符...请帮帮我...我NSNumberFormatter
对数字和NSScanner
字符串都有用,但是如何一次验证两者。
制作UITextField
委托并粘贴以下代码:-
// 在 -init、-initWithNibName:bundle: 或类似中
NSCharacterSet *blockedCharacters = [[[NSCharacterSet alphanumericCharacterSet] invertedSet] retain];
- (BOOL)textField:(UITextField *)field shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)characters
{
return ([characters rangeOfCharacterFromSet:blockedCharacters].location == NSNotFound);
}
// 在 -dealloc
[blockedCharacters release];
希望对你有帮助
你可以使用NSRegularExpression
这样的:
NSString *string1 = @"abc123";
NSString *string2 = @"!abc123";
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[^a-z0-9]" options:NSRegularExpressionCaseInsensitive error:&error];
NSUInteger numberOfMatches = [regex numberOfMatchesInString:string1 options:0 range:NSMakeRange(0, [string1 length])];
NSLog(@"string 1 matches: %ld", numberOfMatches);
numberOfMatches = [regex numberOfMatchesInString:string2 options:0 range:NSMakeRange(0, [string1 length])];
NSLog(@"string 2 matches: %ld", numberOfMatches);
并更改图案@"[^a-z0-9]"
以适合您要检查的字符。表示“^
不在此集合中”,因此如果找到任何匹配项,则该字段应验证失败。