3 개의 UITextField (사용자 이름, 전자 메일 및 암호)가있는보기 컨트롤러가 있습니다.UITextField의 텍스트가 유효한 이메일인지 확인하는 방법은 무엇입니까?
먼저 모든 필드에 텍스트가 들어 있는지 확인한 다음 이메일의 텍스트 필드에 @
기호가 있는지 확인하여 유효한 이메일인지 확인하는 방법이 필요합니다. 아무도 이것으로 도울 수 있습니까?
3 개의 UITextField (사용자 이름, 전자 메일 및 암호)가있는보기 컨트롤러가 있습니다.UITextField의 텍스트가 유효한 이메일인지 확인하는 방법은 무엇입니까?
먼저 모든 필드에 텍스트가 들어 있는지 확인한 다음 이메일의 텍스트 필드에 @
기호가 있는지 확인하여 유효한 이메일인지 확인하는 방법이 필요합니다. 아무도 이것으로 도울 수 있습니까?
적절한 전자 메일이 있는지 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);
}
확인하십시오.
iOS 4.0 이상을 타겟팅하는 경우 NSRegularExpression을 고려하고 UITextField 콘텐츠를 this 행을 따라 더 자세히 검사 할 수 있습니다.
이 시도 : -
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
}
다음 코드는 정규 표현식 (정규식 포함)를 사용하여 이메일 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];
}
입니다, 같은 .museum 작동하지 않습니다 새로운 도메인 – Martin
저는 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];
}
http://stackoverflow.com/a/3638271/644149이 정규식에 좋은 방법 –