EmailRegex, предложенный Espuz, имеет небольшую проблему. Оператор диапазона «-» в скобках [] должен быть экранирован, в противном случае письма с символом «-» возвращаются как недействительные.
Я использую следующую строку регулярного выражения для сопоставления с образцом, которая допускает "_", "-" и "." символы в адресе:
NSString *emailRegex = @"[a-zA-Z0-9.\\-_]{2,32}@[a-zA-Z0-9.\\-_]{2,32}\.[A-Za-z]{2,4}";
NSPredicate *regExPredicate =
[NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
BOOL validEmail = [regExPredicate evaluateWithObject:txtField.text];