2015-02-02 5 views
1

텍스트 필드가 반환 된 후 제공된 텍스트가 유효한지 확인하고 싶습니다. 유효 함은 이름에 대해 글자 또는 아포스트로피 하나만을 의미합니다.텍스트 필드를 문자 및 단일 아포스트로피로 제한하려면 iOS의 Regex

저는 정규식을 처음 접했습니다. 이 수표에 사용할 수있는 간단한 정규 표현식이 있습니까? 아니면 누군가가 저의 요구에 맞는 정규 표현식을 작성하는 법을 배울 수있는 독서 자료를 가르쳐 줄 수 있습니까?

+0

몇 가지 구체적인 예를 들으므로 명확한 아이디어를 얻으실 수 있습니다. –

+0

어느 부분에 설명이 필요합니까? 코드 스 니펫 (snippet)은 질문에 적합하지 않습니다. 부적절하다고 생각하는 비트 이외의 모든 것입니다. 이것이 아포스트로피 비트라면 받아 들일 수있는 엔트리의 예가 O'Dowed가 될 것이지만 받아 들일 수없는 엔트리는 O'Dowed가 될 것입니다. – Tiddly

답변

2

당신은 이런 식으로 작업을 수행 할 수 있습니다 사용할 수 있어야하지만 당신은 입력되는 경우에 에러를 표시해야 유효하지 않습니다.

- (BOOL)textFieldShouldEndEditing:(UITextField *)aTextField 
{ 
    NSString *const regularExpression = @"^[a-zA-Z']+$"; 
    NSError *error = NULL; 
    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regularExpression 
                      options:kNilOptions 
                      error:&error]; 
    if (error) { 
     // Handle error 
    } 

    NSUInteger numberOfMatches = [regex numberOfMatchesInString:aString 
                 options:0 
                  range:NSMakeRange(0, [aString length])]; 
    return numberOfMatches > 0; 
} 
0

입력을 삽입할지 여부를 확인하고 문자를 제한하는 기능을 사용할 수 있습니다. 제한이 매우 간단하기 때문에 정규식이 필요 없으며 문자 집합을 사용할 수 있습니다.

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

    NSMutableCharacterSet *allowedCharacters = [NSMutableCharacterSet alphanumericCharacterSet]; 
    [allowedCharacters addCharactersInString:@"'"]; 

    if([string rangeOfCharacterFromSet:allowedCharacters.invertedSet].location == NSNotFound){ 
     return YES; 
    } 

    return NO; 
} 
+0

각 개별 문자를 확인하고 싶지 않습니다. 완성 된 문자열을 확인하고 싶습니다. – Tiddly

+0

그 차이점은 무엇입니까? 삽입 할 때 단일 문자를 확인하는 것이 더 안전합니다. 편집 모드가 완료되면 확인하는 것이 아니라 일반적으로 그렇게합니다. – entropid

+0

흐름을 char로 확인하여 char로 변경합니다. 나는 그것이 더 나을 것이라는 데 동의하지만 그것은 나의 부름이 아닙니다. – Tiddly

0

REGX는

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz '가

당신이

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

     if (textField == emailid) { 
      NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:@"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'"] invertedSet]; 
      NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""]; 
      ; 
      return [string isEqualToString:filtered]; 
     } 
    } 
+0

위의 주석과 동일하게 각 개인의 문자를 확인하고 싶지 않습니다. 완성 된 후 전체 문자열을 확인하고 싶습니다. – Tiddly