Проверка электронной почты в iOS - PullRequest
4 голосов
/ 15 декабря 2011

Проверка правильности электронной почты в программировании iPhone может быть выполнена с использованием библиотеки RegexKitLite (iOS2.0), NSPredicate (iOS 3.0 и выше) и NSRegularExpression (iOS 4.0). Но может ли кто-нибудь заявить, в чем заключается преимущество одного из них над другим и какой из перечисленных трех вариантов является лучшим проверяющим.

Ответы [ 7 ]

11 голосов
/ 15 декабря 2011

я всегда использую NSPredicate ... и он работает нормально

NSString *emailid = emailField.text;
NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSPredicate *emailTest =[NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
BOOL myStringMatchesRegEx=[emailTest evaluateWithObject:emailid];
8 голосов
/ 13 марта 2013

Мой ответ - рефакторинг от отличное решение, предоставленное по этой ссылке ..

///Returns YES (true) if EMail is valid
+(BOOL) IsValidEmail:(NSString *)emailString Strict:(BOOL)strictFilter
{
    NSString *stricterFilterString = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
    NSString *laxString = @".+@.+\\.[A-Za-z]{2}[A-Za-z]*";

    NSString *emailRegex = strictFilter ? stricterFilterString : laxString;
    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];

    return [emailTest evaluateWithObject:emailString];
}
3 голосов
/ 01 апреля 2013
- (BOOL)validateEmail:(NSString *)emailStr
{
    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:emailStr];
}

On Button Click :

if (![self validateEmail:[txtEmail text]])
    {
        alertValidator.message = @"Please Enter Valid Email Address !";
        [alertValidator show];
        txtEmail.text = @"";
        [txtEmail becomeFirstResponder];
    }
2 голосов
/ 20 октября 2013

Я думаю, что лучший вариант, не обращая внимания, это Бесплатный API проверки почты Mailgun .Я написал для него простую оболочку Objective-C:

https://github.com/benzguo/BZGMailgunEmailValidation

BZGMailgunEmailValidator *validator = 
    [BZGMailgunEmailValidator validatorWithPublicKey:YOUR_PUBLIC_KEY];

[validator validateEmailAddress:self.emailFieldCell.textField.text
                        success:^(BOOL isValid, NSString *didYouMean) {
                        // Validation succeeded
                      } failure:^(NSError *error) {
                        // Validation failed
                      }];

Если возникает ошибка соединения, валидатор возвращается к проверке на основе регулярных выражений.

Если вы все еще хотите проверять электронную почту с помощью регулярного выражения, проверьте:

http://www.regular -expressions.info / email.html

https://wiki.mozilla.org/TLD_List

1 голос
/ 15 декабря 2011

Я думаю, что это во многом зависит от минимальной версии iOS, которую приложение будет поддерживать, и, если есть встроенный класс, который будет выполнять эту работу, используйте его. Как вы намекнули, вы бы использовали какую-то другую стороннюю платформу для согласованной поддержки старых версий.

Прямо сейчас я бы использовал NSPredicate или NSRegularExpression, оба поддерживаются начиная с iOS 4 и выше, что, скорее всего, будет минимальной поддерживаемой версией для новых приложений iOS, если не iOS 5.

Полезно Пост .

0 голосов
/ 04 сентября 2015

как создать идентификатор электронной почты и проверку пароля в ios

Спешите, Легко для простого Подтверждение идентификатора электронной почты, проверьте, что после кода полезно.вы.Спасибо ...

0 голосов
/ 10 июня 2015

полная проверка электронной почты.попробуйте это

- (BOOL)validateEmailWithString:(NSString*)checkString
{

    NSString *laxString = @".+@([A-Za-z0-9-]+\\.)+[A-Za-z]{2}[A-Za-z]*";
    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", laxString];
    return [emailTest evaluateWithObject:checkString];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...