2013-03-15 2 views
0

У меня есть NSString, которую я хотел бы протестировать с помощью NSRegularExpression, но он не действует, как я ожидал, и я не знаю, где искать ответ.« P {Letter}» и NSRegularExpression

Так вот мой код:

BOOL companyNameContainsOnlyAuthorizedCharacters = YES; 

    NSError *error = nil; 
    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[\P{Letter}]" options:0 error:&error]; 
    NSArray *matches = [[NSArray alloc] init]; 
    matches = [regex matchesInString:[model editorName] options:0 range:NSMakeRange(0,[[model editorName] length])]; 

    if ([matches count] > 0) { 

     companyNameContainsOnlyAuthorizedCharacters = NO; 

    } 

За то, что я знаю, [\ P {Письмо}] должно соответствовать ничего, кроме букв. Тем не менее, вместо этого он просто соответствует символам «\», «P», «{», «L», «e», «t», «r» и «}». Я также пробовал без скобок [], но тогда он совсем не соответствует.

Любая помощь была бы очень признательна, спасибо заранее.

Edit: Кроме того, Xcode дает мне предупреждение, что \ P является неизвестной последовательности побег ...

+0

что вы хотите точно? – Balu

+0

Я хотел бы знать, что я делаю неправильно. – user2006934

+0

Вы хотите дать письма от А до Я правильно? – Balu

ответ

0

Вам нужно два обратных слеша:

regularExpressionWithPattern:@"[\\P{Letter}]" 

, потому что сама обратная косая черта должна быть экранированы в строка.

возможно более простое решение, чтобы проверить «письма только»

NSString *stringToTest = ...; 
NSCharacterSet *letterCharset = [NSCharacterSet letterCharacterSet]; 
BOOL lettersOnly = [[stringToTest stringByTrimmingCharactersInSet:letterCharset] length] == 0; 
+0

Хорошо, это работает. Большое вам спасибо :) – user2006934

+0

@ user2006934: Добро пожаловать. Я добавил альтернативное решение ответа, возможно, это полезно. –

0

Вам нужно два обратных слеша. Кроме того, вам не нужно вставлять это в скобки рисунка.

regularExpressionWithPattern:@"\\P{Letter}" 
+0

Спасибо. Оно работает :) – user2006934

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

  • Нет связанных вопросов^_^