2013-05-28 1 views
0

В моем приложении, я хотел бы только принять NSStrings, что только состоит из следующих символов:IOS регулярного выражения с хорошими персонажами

  • аз
  • 0-9
  • AZ
  • пространство (dec: 32)

Что такое NSRegularExpression признать это?

Заранее благодарен!

С уважением, Золей

+1

Посмотрите здесь http://stackoverflow.com/a/576206/973680 –

ответ

2

Вы можете использовать это:

-(BOOL) NSStringIsValid:(NSString *)checkString 
{ 
    NSString *stricterFilterString = @"[A-Z0-9a-z ]*"; 

    NSPredicate *stringTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", stricterFilterString]; 
    return [stringTest evaluateWithObject:checkString]; 
} 

Она возвращает YES, если это действительно еще НЕТ.

Надеюсь, это поможет вам.

1

Я никогда не работал с регулярными выражениями на прошивке, но в соответствии с документацией, должны работать

[а-z0-9A-Z] +

2
NSRegularExpression *regex = 
    [NSRegularExpression regularExpressionWithPattern:@"[a-zA-Z0-9 ]*" 
               options:... 
               error:...]; 

Если вы хотите хотя бы один символ, используйте + вместо *.

+0

Как использовать его в делегате 'UITextField'? – Hemang

+0

'- (BOOL) textField: (UITextField *) textField shouldChangeCharactersInRange: (NSRange) range replacementString: (NSString *) characters;' – Hemang

1

В соответствии с вашими данными детали:

принимают только NSStrings, что только состоят из следующих символов:

Я хотел бы вам попробовать это регулярное выражение:

^[a-z\\d\\s]*$ 

It включает в себя ^ (обеспечить соответствие от начала строки) и $ (обеспечивает соответствие TILL конца стринга г)

Заканчивать этот фрагмент:

NSString *sample = @"df$hjkds hfkshf 9397 AZZ";//@"dfhjkds hfkshf 9397 AZZ"; 
NSError *error = nil; 
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"^[a-z\\d\\s]*$" 
                     options:NSRegularExpressionCaseInsensitive 
                     error:&error]; 
NSArray *matches = [regex matchesInString:sample 
            options:NSMatchingReportProgress 
            range:NSMakeRange(0, [sample length])]; 

// Print matches (if any) -- Optional 
for (NSTextCheckingResult *match in matches) 
    NSLog(@"%@",[sample substringWithRange:match.range]); 

// Acknowledge if no matches found -- Optional 
if([matches count] == 0) 
    NSLog(@"No matches found"); 

Пожалуйста, обратите внимание, что использование NSRegularExpressionCaseInsensitive в option не будет принимать накладные расходы сращивания заглавных букв (от A-Z).

Надеюсь, это поможет!

+1

@Zoltan Varadi, вы проверили мое решение? – NeverHopeless

+0

хороший ответ, он отлично работает.Есть ли способ проверить только 2 цифры и 2 буквы по крайней мере в строке –

+0

@CharanGiri, рад видеть ее полезную для вас. Вы можете посмотреть это регулярное выражение: '^ ((? =. * [Az]) (? =. * \ D) [az \ d] {4}. *) $' Проверить демо здесь: http: // rubular .com/г/Ua2qe8j4eC. Это будет соответствовать строке, содержащей по крайней мере два альфа-и числовых символов и может быть что-то еще. – NeverHopeless

Смежные вопросы