iOS에서 이메일 주소가 유효한지 확인합니다.
로그인 시 사용자가 이메일 주소를 알려줘야 하는 아이폰 어플리케이션을 개발 중입니다.
이메일 주소가 유효한 이메일 주소인지 확인하는 가장 좋은 방법은 무엇입니까?
좋은 코코아 기능:
-(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
미포함NSRegularExpression
class, 단, 포함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
'programing' 카테고리의 다른 글
VBA를 사용하지 않고 Excel에서 역문자열 검색을 실행하는 방법은 무엇입니까? (0) | 2023.04.23 |
---|---|
T-SQL에는 문자열을 연결하는 집약 기능이 있습니까? (0) | 2023.04.23 |
Swift에서 UITextView에 자리 표시자 텍스트를 추가하시겠습니까? (0) | 2023.04.23 |
가장 일반적인 SQL 안티 패턴은 무엇입니까? (0) | 2023.04.23 |
"이 디렉토리 또는 페이지를 볼 수 있는 권한이 없습니다"를 디버깅하는 방법 (0) | 2023.04.23 |