Programing

이메일 주소가 iOS에서 유효한지 확인하십시오

lottogame 2020. 5. 8. 08:14
반응형

이메일 주소가 iOS에서 유효한지 확인하십시오


중복 가능성 :
iOS 2.0의 Objective-C에서 이메일 주소를 확인하는 모범 사례?

사용자가 로그인 할 때 이메일 주소를 제공 해야하는 iPhone 응용 프로그램을 개발 중입니다.

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


좋은 코코아 기능 :

-(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];
}

엄격한 대 락스에 대한 토론 - 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 에서 다양한 정규 표현식과 그 트레이드 오프에 대한 좋은 토론이 있습니다.

다음은 유효하지 않은 일부 주소를 허용한다는 측면에서 비교적 간단한 것입니다. ^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6}$

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

iOS 4.x 이상

당신은 사용할 수 있습니다 NSRegularExpression직접 정규 표현식에 대해 컴파일 및 테스트 할 수 있도록한다.

iOS 3.x

인클루드하지 않습니다 NSRegularExpression클래스 만 포함 않습니다 NSPredicate정규 표현식에 대해 일치 할 수있는.

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

cocoawithlove.com 에서이 접근법에 대한 전체 기사를 읽으십시오 .

iOS 2.x

Cocoa 라이브러리에 일치하는 정규식을 포함하지 않습니다. 그러나 프로젝트에 RegexKit Lite쉽게 포함시킬 수 있으므로 iOS 2.0에 포함 된 C 레벨 정규식 API에 액세스 할 수 있습니다.


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

[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)>)$

실제로 이메일이 있는지 확인하고 반송되지 않는 것은 이메일을 보내고 결과를 확인하는 것을 의미합니다. 즉, 바운스되거나 그렇지 않습니다. 그러나 몇 시간 동안 반송되지 않거나 전혀 "실제"전자 메일 주소가 아닐 수도 있습니다. 이 서비스를 제공하기 위해 많은 서비스가 있으며 아마도 당신이 지불했을 것이며 실제로 솔직하지 않은 이유는 무엇입니까?

It is good to check the user has not misspelt their email else they could enter it incorrectly, not realise it and then get hacked of with you for not replying. However if someone wants to add a bum email address there would be nothing to stop them creating it on hotmail or yahoo (or many other places) to gain the same end.

So do the regular expression and validate the structure but forget about validating against a service.

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

반응형