0

我有一个NSString用户输入的UITextField值,在这里我需要验证字符串是否只包含类似的值

'a to z' , 'A to z' , '1 to 9'.

我不想要除这些以外的任何其他字符...请帮帮我...我NSNumberFormatter对数字和NSScanner字符串都有用,但是如何一次验证两者。

4

2 回答 2

4

制作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];

希望对你有帮助

于 2013-01-07T07:29:49.400 回答
1

你可以使用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]"以适合您要检查的字符。表示“^不在此集合中”,因此如果找到任何匹配项,则该字段应验证失败。

于 2013-01-07T07:43:57.650 回答