programing

iOS에서 이메일 주소가 유효한지 확인합니다.

powerit 2023. 4. 23. 11:33
반응형

iOS에서 이메일 주소가 유효한지 확인합니다.

중복 가능성:
iOS 2.0의 Objective-C에서 이메일 주소를 검증하기 위한 베스트 프랙티스

로그인 시 사용자가 이메일 주소를 알려줘야 하는 아이폰 어플리케이션을 개발 중입니다.

이메일 주소가 유효한 이메일 주소인지 확인하는 가장 좋은 방법은 무엇입니까?

좋은 코코아 기능:

-(BOOL) NSStringIsValidEmail:(NSString *)checkString
{
   BOOL stricterFilter = NO; // Discussion http://blog.logichigh.com/2010/09/02/validating-an-e-mail-address/
   NSString *stricterFilterString = @"^[A-Z0-9a-z\\._%+-]+@([A-Za-z0-9-]+\\.)+[A-Za-z]{2,4}$";
   NSString *laxString = @"^.+@([A-Za-z0-9-]+\\.)+[A-Za-z]{2}[A-Za-z]*$";
   NSString *emailRegex = stricterFilter ? stricterFilterString : laxString;
   NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
   return [emailTest evaluateWithObject:checkString];
}

Lax와 Lax에 대한 논의엄격 - http://blog.logichigh.com/2010/09/02/validating-an-e-mail-address/

카테고리가 더 좋기 때문에 인터페이스를 추가할 수도 있습니다.

@interface NSString (emailValidation) 
  - (BOOL)isValidEmail;
@end

시행하다

@implementation NSString (emailValidation)
-(BOOL)isValidEmail
{
  BOOL stricterFilter = NO; // Discussion http://blog.logichigh.com/2010/09/02/validating-an-e-mail-address/
  NSString *stricterFilterString = @"^[A-Z0-9a-z\\._%+-]+@([A-Za-z0-9-]+\\.)+[A-Za-z]{2,4}$";
  NSString *laxString = @"^.+@([A-Za-z0-9-]+\\.)+[A-Za-z]{2}[A-Za-z]*$";
  NSString *emailRegex = stricterFilter ? stricterFilterString : laxString;
  NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
  return [emailTest evaluateWithObject:self];
}
@end

그 후 활용:

if([@"emailString@email.com" isValidEmail]) { /* True */ }
if([@"InvalidEmail@notreallyemailbecausenosuffix" isValidEmail]) { /* False */ }

문자열 변수에 유효한 전자 메일 주소가 포함되어 있는지 확인하는 가장 쉬운 방법은 정규식을 기준으로 테스트하는 것입니다.regular-expressions.info에서는 다양한 regex와 그 트레이드오프의 좋은 논의가 있습니다.

다음은 비활성 주소를 허용하는 쪽에 의존하는 비교적 간단한 예입니다.^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6}$

정규 표현을 사용하는 방법은 사용 중인 iOS 버전에 따라 다릅니다.

iOS 4.x 이후

사용할 수 있습니다.NSRegularExpression를 사용하면 정규 표현에 대해 직접 컴파일 및 테스트를 수행할 수 있습니다.

iOS 3.x

미포함NSRegularExpressionclass, 단, 포함NSPredicate이는 정규 표현과 일치할 수 있습니다.

NSString *emailRegex = ...;
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
BOOL isValid = [emailTest evaluateWithObject:checkString];

cocoawithlove.com에서 이 접근법에 대한 전문 기사를 읽어보십시오.

iOS 2.x

코코아 라이브러리에 일치하는 정규 표현식을 포함하지 않습니다.그러나 RegexKit Lite를 프로젝트에 쉽게 포함할 수 있습니다.이것에 의해, iOS 2.0 에 포함되는 C 레벨의 regex API 에 액세스 할 수 있습니다.

NSRegular Expression을 사용하는 것이 좋습니다.

[text rangeOfString:@"^.+@.+\\..{2,}$" options:NSRegularExpressionSearch].location != NSNotFound;

원하는 대로 정규식을 삽입할 수 있지만 한 줄에 넣을 수 있는 것이 좋습니다.

전자 메일 문자열을 확인하려면 정규 표현식을 작성하여 올바른 형식인지 확인해야 합니다.웹에는 많은 정보가 있지만, 일부는 실제로 합법적인 주소를 제외할 수 있으므로 주의하세요.

기본적으로는 이렇게 생겼을 것이다

^((?>[a-zA-Z\d!#$%&'*+\-/=?^_`{|}~]+\x20*|"((?=[\x01-\x7f])[^"\\]|\\[\x01-\x7f])*"\x20*)*(?<angle><))?((?!\.)(?>\.?[a-zA-Z\d!#$%&'*+\-/=?^_`{|}~]+)+|"((?=[\x01-\x7f])[^"\\]|\\[\x01-\x7f])*")@(((?!-)[a-zA-Z\d\-]+(?<!-)\.)+[a-zA-Z]{2,}|\[(((?(?<!\[)\.)(25[0-5]|2[0-4]\d|[01]?\d?\d)){4}|[a-zA-Z\d\-]*[a-zA-Z\d]:((?=[\x01-\x7f])[^\\\[\]]|\\[\x01-\x7f])+)\])(?(angle)>)$

실제로 이메일이 존재하는지 여부를 확인하는 것은 이메일을 보내고 결과를 확인하는 것입니다. 즉, 이메일이 되돌아왔는지 여부를 확인하는 것입니다.그러나 이 주소는 몇 시간 동안 표시되지 않거나 전혀 표시되지 않을 수 있으며 여전히 "실제" 전자 메일 주소가 아닙니다.당신을 위해 이것을 하고 싶어하고 아마도 당신이 비용을 지불할 수 있는 많은 서비스가 있습니다.솔직히 왜 그것이 진짜인지 알아보려고 합니까?

사용자가 이메일 철자를 잘못 입력하지 않았는지 확인하는 것이 좋습니다.잘못 입력했을 수도 있고, 깨닫지 못했을 수도 있고, 회신을 하지 않았다는 이유로 해킹을 당할 수도 있습니다.그러나 누군가가 부정한 이메일 주소를 추가하고 싶다면 동일한 목적을 얻기 위해 핫메일이나 야후(또는 다른 많은 장소)에서 이메일 주소를 생성하는 것을 막을 수 없습니다.

정규 표현식 및 구조 검증은 하되 서비스에 대한 검증은 생략합니다.

언급URL : https://stackoverflow.com/questions/3139619/check-that-an-email-address-is-valid-on-ios

반응형