Проверка электронной почты на iPhone

Я применил следующий код. Он принимает любые типы почтовых идентификаторов. Пример: abc@xyz.com. Но я хочу принять идеальный идентификатор почты. Пример: abc @ gmail.com, abc @ yahoo.com. Может ли кто-нибудь посоветовать, как это сделать.

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

заранее спасибо

2 Solutions collect form web for “Проверка электронной почты на iPhone”

Попробуйте этот код:

 - (BOOL) validateEmail: (NSString *) candidate { NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; BOOL result = [emailTest evaluateWithObject:candidate]; if(result) { NSSet *domains= [NSSet setWithObjects:@"yahoo.com",@"yahoo.co.in",@"yahoo.co.au",@"yahoo.co.nz",@"gmail.com",@"rediffmail.com",.........., nil]; NSArray *arrayObjects = [domains allObjects]; BOOL results = NO; for(int i = 0;i<[arrayObjects count];i++) { if([emailTest rangeOfString:[arrayObjects objectAtIndex:i]].location != NSNotFound) { results = YES; break; } } return results; } else { return NO; } return [emailTest evaluateWithObject:candidate]; } 

Надеюсь, все в порядке.

Дай мне знать, если тебе еще понадобится помощь.

EDIT: ДОБАВЛЕНО ПРОВЕРЬТЕ НАЗВАНИЕ ДОМЕНА

Ниже будут также указаны имена доменов и их расширение. Не стесняйтесь добавлять в этот код свои имена.

  - (BOOL)isValidEmail:(NSString *)inputText { NSString *emailRegex = @"[A-Z0-9a-z][A-Z0-9a-z._%+-]*@[A-Za-z0-9][A-Za-z0-9.-]*\\.[A-Za-z]{2,6}"; NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; NSRange dotRange; NSRange atRange; BOOL isValidDomain = NO; BOOL isValidSite = NO; if([emailTest evaluateWithObject:inputText]) { dotRange = [inputText rangeOfString:@"." options:NSBackwardsSearch range:NSMakeRange(0, [inputText length])]; int indexOfDot = dotRange.location; if(dotRange.location != NSNotFound) { NSString *topLevelDomain = [inputText substringFromIndex:indexOfDot]; topLevelDomain = [topLevelDomain lowercaseString]; NSSet *TLD; TLD = [NSSet setWithObjects:@".aero", @".asia", @".biz", @".cat", @".com", @".coop", @".edu", @".gov", @".info", @".int", @".jobs", @".mil", @".mobi", @".museum", @".name", @".net", @".org", @".pro", @".tel", @".travel", @".ac", @".ad", @".ae", @".af", @".ag", @".ai", @".al", @".am", @".an", @".ao", @".aq", @".ar", @".as", @".at", @".au", @".aw", @".ax", @".az", @".ba", @".bb", @".bd", @".be", @".bf", @".bg", @".bh", @".bi", @".bj", @".bm", @".bn", @".bo", @".br", @".bs", @".bt", @".bv", @".bw", @".by", @".bz", @".ca", @".cc", @".cd", @".cf", @".cg", @".ch", @".ci", @".ck", @".cl", @".cm", @".cn", @".co", @".cr", @".cu", @".cv", @".cx", @".cy", @".cz", @".de", @".dj", @".dk", @".dm", @".do", @".dz", @".ec", @".ee", @".eg", @".er", @".es", @".et", @".eu", @".fi", @".fj", @".fk", @".fm", @".fo", @".fr", @".ga", @".gb", @".gd", @".ge", @".gf", @".gg", @".gh", @".gi", @".gl", @".gm", @".gn", @".gp", @".gq", @".gr", @".gs", @".gt", @".gu", @".gw", @".gy", @".hk", @".hm", @".hn", @".hr", @".ht", @".hu", @".id", @".ie", @" No", @".il", @".im", @".in", @".io", @".iq", @".ir", @".is", @".it", @".je", @".jm", @".jo", @".jp", @".ke", @".kg", @".kh", @".ki", @".km", @".kn", @".kp", @".kr", @".kw", @".ky", @".kz", @".la", @".lb", @".lc", @".li", @".lk", @".lr", @".ls", @".lt", @".lu", @".lv", @".ly", @".ma", @".mc", @".md", @".me", @".mg", @".mh", @".mk", @".ml", @".mm", @".mn", @".mo", @".mp", @".mq", @".mr", @".ms", @".mt", @".mu", @".mv", @".mw", @".mx", @".my", @".mz", @".na", @".nc", @".ne", @".nf", @".ng", @".ni", @".nl", @".no", @".np", @".nr", @".nu", @".nz", @".om", @".pa", @".pe", @".pf", @".pg", @".ph", @".pk", @".pl", @".pm", @".pn", @".pr", @".ps", @".pt", @".pw", @".py", @".qa", @".re", @".ro", @".rs", @".ru", @".rw", @".sa", @".sb", @".sc", @".sd", @".se", @".sg", @".sh", @".si", @".sj", @".sk", @".sl", @".sm", @".sn", @".so", @".sr", @".st", @".su", @".sv", @".sy", @".sz", @".tc", @".td", @".tf", @".tg", @".th", @".tj", @".tk", @".tl", @".tm", @".tn", @".to", @".tp", @".tr", @".tt", @".tv", @".tw", @".tz", @".ua", @".ug", @".uk", @".us", @".uy", @".uz", @".va", @".vc", @".ve", @".vg", @".vi", @".vn", @".vu", @".wf", @".ws", @".ye", @".yt", @".za", @".zm", @".zw", nil]; if(topLevelDomain != nil && ([TLD containsObject:topLevelDomain])) { isValidDomain = YES; } } atRange = [inputText rangeOfString:@"@" options:NSBackwardsSearch range:NSMakeRange(0, [inputText length])]; int indexOfAt = atRange.location; if(atRange.location != NSNotFound) { NSString *topLevelSite = [inputText substringWithRange:NSMakeRange(indexOfAt, indexOfDot - indexOfAt)]; topLevelSite = [topLevelSite lowercaseString]; NSSet *TLS; //Add your required domain names to the set below TLS = [NSSet setWithObjects:@"@google", @"@yahoo", nil]; if(topLevelSite != nil && ([TLS containsObject:topLevelSite])) { isValidSite = YES; } } } return (isValidDomain && isValidSite); } 
  • Добавить изображение на экран блокировки в приложении iOS, когда приложение работает в фоновом режиме
  • Поместить объект в редактор сцены xcode с помощью набора сюжетов xcode 9 beta
  • In-App Purchase - Доступные продукты не имеют localizedTitle, localizedDescription
  • Принудительная ориентация LandScape без использования setOrientation: UIInterfaceOrientationAnyOrientation]
  • XCode 9. Не удалось установить определяемое пользователем свойство в построителе интерфейса
  • UIView две анимации, сосуществующие
  • Как ограничить приложение iOS только 4-дюймовыми экранными устройствами?
  • Как ссылаться на ViewController в раскадровке с помощью CurrentViewController
  • Текст UILabel усекает при повороте. Как исправить?
  • Как я могу избежать XCode сброса местоположения на моем iPhone каждый раз, когда он запускается
  • Приложение быстрой загрузки iOS не воспроизводит музыку в фоновом режиме
  • Interesting Posts

    Xcode не видит моего сертификата разработчика в идентификаторе подписи кода

    NSDateFormatter возвращает null для определенных дат

    UIDatePicker с белым фоном на элемент

    Как вставлять метаданные exif в изображение без копирования изображения?

    Как обнаружить устройства iOS, когда кабель подключен или нет (без добавления USB для зарядки)

    Удалить границу UISearchBar в iOS7

    Получение информации о пользователе из Facebook в iOS

    Масштабирование содержимого CALayer

    Почему все методы имеют одно и то же имя в делегате?

    Изображение не загружается из пути к файлу в iOS

    Haskell на iOS с текущим xcode

    iOS, почему система убивает приложение, используя местоположение в фоновом режиме

    «Неравновесные вызовы для начала / окончания появления переходов», предупреждающие, когда наводят вид в модальном виде в XCode 4 с помощью раскадровки

    iOS 8, Как использовать устройство для разработки?

    Как воспроизводить одновременно несколько аудиофайлов

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.