2012-12-23 4 views
0

male 또는 female 중 하나만 받아들이려면 목표 C에서 정규 표현식이 필요합니다. case-Insensitive이어야합니다. 사과문을 통해 받아 들일 수 있습니다. 코드 아래에 구현되었지만 작동하지 ...Objective-C 정규 표현식

- 만해야

-(BOOL)genderValidate:(NSString *)string{ 

NSError *error=nil; 

NSRegularExpression *regex =[NSRegularExpression regularExpressionWithPattern:@"\\b (m|f)(a|e)(l|m)(e|a)(l)(e) \\b" options:(NSRegularExpressionCaseInsensitive) error: &error]; 
NSUInteger numberofmatches =[regex numberOfMatchesInString:string options:0 range:NSMakeRange(0,[string length])]; 

return numberofmatches; 


} 

답변

7

정규식을 사용해야하는 이유는 무엇입니까? 간단하게 유지 :

- (BOOL)genderValidate:(NSString *)string { 
    string = [string lowercaseString]; 

    return [string isEqualToString:@"male"] || [string isEqualToString:@"female"]; 
} 
+0

나중에 ... 감사합니다. 좋은 생각 – Christien

+0

질문에 "대소 문자를 구분해야합니다. Insensitive "이므로'isEqualToString' 대신'caseInsensitiveCompare :'를 사용하고 싶을 것입니다. – user1135469

+0

@ user1135469 제 코드를 다시보십시오. 첫 번째 줄은'string'을 모두 소문자로 변환합니다. 결과는 대소 문자를 구분하지 않습니다. – rmaddy

1

정규식을 수용 할 수>남성 또는 여성

^(male|female)$ 
,
+0

나중에 감사드립니다! – Christien

+0

그리고 3 자릿수가 필요하면 ...^[0-9] [0-9] [0-9] $'ryt? – Christien

+1

@Christien 예 ..^[0-9] {3} $'또는'\ d {3}'^는 문자열의 시작을 의미 할 수 있습니다 ..'$ '는 문자열의 끝을 의미합니다! – Anirudha