我有一個NSString
具有用戶輸入UITextField
值,在這裏,我需要驗證字符串是否只包含像目標C的NSString驗證
'a to z' , 'A to z' , '1 to 9'.
我不想除了這些之外的任何其他字符值.. 。請幫助我... 我使用NSNumberFormatter
用於Numbers,NSScanner
用於Strings,但是如何一次驗證兩者。
我有一個NSString
具有用戶輸入UITextField
值,在這裏,我需要驗證字符串是否只包含像目標C的NSString驗證
'a to z' , 'A to z' , '1 to 9'.
我不想除了這些之外的任何其他字符值.. 。請幫助我... 我使用NSNumberFormatter
用於Numbers,NSScanner
用於Strings,但是如何一次驗證兩者。
讓UITextField
代表和粘貼下面的代碼: -
//在-init,-initWithNibName:捆綁:,或類似
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
,比如s o:
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]"
以適合您要檢查的字符。 ^
的意思是「不在這個集合中」,所以如果發現任何匹配,該字段應該失敗驗證。
我怎樣才能讓'_','@'...? –
@HarishSaran檢查你有問題的問題 –
如果你只是想輸入你允許的字符,你可以使用'characterSetWithCharactersInString:'。如果你喜歡Prateek的解決方案的結果,但只是想添加_和@你可以使用NSMutableCharacterSet(只是'union'將它們放在一起,使用'characterSetWithCharactersInString:'做第二個集合。很難從文檔確定,但我很確定'alphanumericCharacterSet'會包含你通常不認爲是az的東西,比如ç – MaxGabriel