2012-06-26 2 views
2

Как использовать регулярное выражение в iOS sdk?Как использовать регулярное выражение в iOS sdk

Мне нужно проверить UITextField, используя регулярное выражение, чтобы разрешить только числовые значения в UITextField.

+1

[Что вы пробовали] (http://www.whathaveyoutried.com) – akk

+0

@RKK - Очевидно, не пытались искать! –

+0

@RKK Если я не пробовал, как сделать сейчас о регулярном выражении! я смутил, как использовать 9-0 $, как этот символ в моем кодировании! – user1478583

ответ

2

Попробуйте для регулярного выражения ^ [0-9] + $

+0

спасибо, что помогите мне! – user1478583

3

В вашем shouldChangeCharactersInRange вы можете сделать это с помощью этого

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 

     NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string]; 

     NSString *expression = @"^([0-9]+$"; 

     NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:expression 
                       options:NSRegularExpressionCaseInsensitive 
                       error:nil]; 
     NSUInteger numberOfMatches = [regex numberOfMatchesInString:newString 
                  options:0 
                   range:NSMakeRange(0, [newString length])];   
     if (numberOfMatches == 0) 
      return NO;   


    return YES; 
} 
+0

спасибо за способ делегата и много кода! – user1478583

1

Попробуйте это, было бы полезно для вас

- (void)textFieldDidEndEditing:(UITextField *)textField 
{ 
    activeField = nil; 
    if (textField == tfMobile) 
    { 
     NSString *[email protected]"[0-9]*"; 
     NSPredicate *MobNumTest=[NSPredicate predicateWithFormat:@"SELF MATCHES %@",strRegExp]; 
     if([MobNumTest evaluateWithObject:textField.text]==NO) 
     { 

      UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Warning" message:@"Please Enter correct contact no." delegate:nil cancelButtonTitle:@"ok" otherButtonTitles:nil]; 

      [alert show]; 
      [alert release]; 

      tfMobile.text [email protected]""; 

     } 

    } 
    } 
0

Вызовите этот метод, где вам нужно.it возвращает true, если checkString содержит только цифры

- (BOOL) textFieldValidation:(NSString *)checkString { 
     NSString *stricterFilterString = @"[0-9]+";//here + is for one or more numerals(use * for zero or more numerals) 
     NSString *regEx = stricterFilterString; 
     NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regEx]; 
     return [emailTest evaluateWithObject:checkString]; 

}