2013-03-15 2 views
0

NSRegularExpression을 사용하여 테스트하고 싶은 NSString을 가지고 있지만 예상했던대로 동작하지 않으며 더 이상 대답을 찾을 곳을 모르겠습니다. [\ P {편지}], 내가 알고있는 것을 들어" 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", "{", "L", "e", "t", "r"및 "}"문자와 일치합니다. 나는 또한 대괄호 []없이 시도했지만, 그다지 전혀 일치하지 않는다.

도움을 주시면 대단히 감사하겠습니다. 미리 감사드립니다.

편집 : 백 슬래시 자체에서 탈출해야하기 때문

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

: 또한 는, 엑스 코드 당신은 두 개의 백 슬래시를 필요로 나에게 P는 알 수없는 이스케이프 시퀀스입니다 \ 경고 ...

+0

정확히 무엇을 원하십니까? – Balu

+0

나는 내가 뭘 잘못하고 있는지 알고 싶다. – user2006934

+0

A부터 Z까지 문자를주고 싶습니까? – Balu

답변

0

을 제공합니다 문자열.

아마도 간단한 해결책 "은 문자"당신은 두 개의 백 슬래시가 필요

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

좋습니다. 고마워요. – user2006934

+0

@ user2006934 : 환영합니다. 나는 대안에 대한 해결책을 추가했다. 아마 유용 할 것이다. –

0

입니다 확인합니다. 또한 이것을 괄호 안에 넣을 필요는 없습니다.

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

감사합니다. 그것은 작동합니다 :) – user2006934

관련 문제