2011-10-10 2 views

답변

4

적절한 전자 메일이 있는지 UITextField를 검사합니다.
이 메서드를 textFields delegate에 추가 한 다음 변경하려고하는 문자를 추가할지 여부를 확인하십시오.
반환 YES 또는 NO 유효한 이메일 주소에 비해 텍스트 필드의 현재 텍스트에 따라 : 텍스트 필드가 비어 있거나 당신의 뷰 컨트롤러 어디서나 if (myTextField.text.length > 0) {}를 사용하지 않을 경우

#define ALPHA     @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" 
#define NUMERIC     @"1234567890" 
#define ALPHA_NUMERIC   ALPHA NUMERIC 

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    NSCharacterSet *unacceptedInput = nil; 
    if ([[textField.text componentsSeparatedByString:@"@"] count] > 1) { 
     unacceptedInput = [[NSCharacterSet characterSetWithCharactersInString:[ALPHA_NUMERIC stringByAppendingString:@".-"]] invertedSet]; 
    } else { 
     unacceptedInput = [[NSCharacterSet characterSetWithCharactersInString:[ALPHA_NUMERIC stringByAppendingString:@".!#$%&'*+-/=?^_`{|}[email protected]"]] invertedSet]; 
    } 
    return ([[string componentsSeparatedByCharactersInSet:unacceptedInput] count] <= 1); 
} 

확인하십시오.

+0

http://stackoverflow.com/a/3638271/644149이 정규식에 좋은 방법 –

3

이 시도 : -

if(![emailTextField.text isEqualToString:@""] && ![userNameTextField.text isEqualToString:@""] && ![passwordTextField.text isEqualToString:@""]) 
     { 

     NSString *emailRegEx = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; 
     NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegEx]; 
     //Valid email address 
     if ([emailTest evaluateWithObject:emailTextField.text] == YES) 
     { 
    } 
    else 
    { 
    //not valid email address 
    } 
} 


     else 
     { 
     //any of the text field is empty 
     } 
6

다음 코드는 정규 표현식 (정규식 포함)를 사용하여 이메일 ID의 유효성을 확인하기위한 사용이다.

(BOOL) validateEmail: (NSString *) candidate { 
    NSString *emailRegex = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; 
    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; // return 0; 
    return [emailTest evaluateWithObject:candidate]; 
} 
+0

입니다, 같은 .museum 작동하지 않습니다 새로운 도메인 – Martin

5

저는 Mimit의 솔루션을 사용했지만 박물관과 같이 긴 이름을 허용하도록 emailRegex를 수정했습니다. 따라서 마지막 중괄호는 이제 {2, 6}이 아니라 {2, 4}라고 말합니다. 그리고 더 긴 이름으로 테스트 해 보았습니다. 감사의 말은 쉬운 해결책입니다.

-(BOOL) validateEmail: (NSString *) candidate { 
    NSString *emailRegex = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,6}"; 
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; // return 0; 
    return [emailTest evaluateWithObject:candidate]; 
} 
관련 문제