Какой самый чистый способ проверки адреса электронной почты, который пользователь вводит в iOS 2.0?
ПРИМЕЧАНИЕ . Это исторический вопрос, характерный для iOS 2.0, и из-за его возраста и количества других вопросов, связанных с ним, он не может быть удален и НЕ ДОЛЖЕН быть заменен на «современный» вопрос.
cocoa-touch
email-validation
iphone-sdk-2
Маркус С. Зарра
источник
источник
NSDataDetector
для проверки адресов электронной почты: stackoverflow.com/a/23547905/257550Ответы:
Ответ на Использование регулярного выражения для проверки адреса электронной почты очень подробно объясняет, что грамматика, указанная в RFC 5322, слишком сложна для примитивных регулярных выражений.
Я рекомендую настоящий парсерный подход, такой как MKEmailAddress .
Как быстрое решение регулярных выражений увидеть эту модификацию DHValidation :
источник
@"[^@]+@[^.@]+(\\.[^.@]+)+"
если вам нужно подтвердить адрес электронной почты, отправьте ему сообщение и посмотрите, получится ли это. Вы никогда не будете проверять это с какой-либо степенью точности с помощью одного регулярного выражения, поэтому лучше не злить пользователей и не терять регистрацию из-за излишне строгого регулярного выражения.Прочитайте RFC. Почти каждый, кто думает, что знает, как разобрать / очистить / проверить адрес электронной почты, неправ.
http://tools.ietf.org/html/rfc2822 Раздел 3.4.1 очень полезен. уведомление
Да, это означает, что +, 'и т. Д. Являются законными.
источник
Лучшее решение, которое я нашел до сих пор (и тем, на котором я остановился), - это добавить RegexKitLite в проект, который предоставляет доступ к регулярным выражениям через NSString Categories.
Добавлять в проект довольно безболезненно, и, как только он появится, любая логика проверки правильности электронной почты будет работать.
источник
Хорошее начало состоит в том, чтобы решить, что вы и не хотите принять в качестве адреса электронной почты?
99% адресов электронной почты выглядят так: bob.smith@foo.com или fred@bla.edu
Однако технически законно иметь адрес электронной почты, подобный этому: f
!#$%&'*+-/=?^_
{|} ~ "ha!" @ ComВероятно, в мире существует всего несколько действительных писем для доменов верхнего уровня, и почти никто не использует большинство этих других символов (особенно кавычки и обратные пометки), поэтому вы можете предположить, что это все недопустимые действия. Но вы должны сделать это как осознанное решение.
Кроме того, делайте то, что говорит Пол, и попытайтесь сопоставить ввод с регулярным выражением, например: ^ [A-Z0-9 ._% + -] + @ [A-Z0-9 .-] +. [AZ] { 2} $
Тот будет соответствовать почти каждому адресу электронной почты.
источник
Хотя сосредоточиться на регулярных выражениях хорошо, но это только первый и необходимый шаг. Есть и другие шаги, которые также необходимо учитывать для хорошей стратегии проверки.
Две вещи на моей голове:
Проверка DNS, чтобы убедиться, что домен действительно существует.
После проверки DNS вы также можете выполнить проверку SMTP. отправьте вызов на сервер SMTP, чтобы узнать, существует ли пользователь на самом деле.
Таким образом, вы можете отследить все виды ошибок пользователя и убедиться, что это действительный адрес электронной почты.
источник
Эта функция проста, но проверяет адрес электронной почты более тщательно. Например, в соответствии с RFC2822 адрес электронной почты не должен содержать два периода подряд, например firstname..lastname @ domain..com
Также важно использовать якоря в регулярных выражениях, как видно из этой функции. Без привязок следующий адрес электронной почты считается действительным: first; name) lastname@domain.com (бла, потому что раздел lastname@domain.com действителен, игнорируя first; name) в начале и (blah в конце. механизм регулярных выражений для проверки всей электронной почты.
Эта функция использует NSPredicate, который не существует в iOS 2. К сожалению, он может не помочь спрашивающему, но, надеюсь, поможет другим с более новыми версиями iOS. Регулярные выражения в этой функции все еще могут быть применены к RegExKitLite в iOS 2, хотя. А для тех, кто использует iOS 4 или более позднюю версию, эти регулярные выражения могут быть реализованы с помощью NSRegularExpression.
См. Подтверждение адреса электронной почты с помощью регулярного выражения в Objective-C .
источник
источник
Я обнаружил, что использование регулярных выражений очень хорошо подходит для проверки адреса электронной почты.
Конечно, основным недостатком регулярных выражений является удобство сопровождения, поэтому комментируйте так, как вы никогда раньше не комментировали. Я обещаю вам, если вы этого не сделаете, вы захотите, чтобы вы сделали, когда вы вернетесь к выражению через несколько недель.
Вот ссылка на источник хорошего, http://www.regular-expressions.info/email.html .
источник
Выкапывая грязь, но я просто наткнулся на SHEmailValidator, который отлично работает и имеет приятный интерфейс.
источник
Многие веб-сайты предоставляют RegExes, но вам стоит изучить и понять их, а также убедиться, что то, что вы хотите, чтобы это соответствовало вашим потребностям в рамках официального RFC для форматов адресов электронной почты.
Для изучения RegEx, интерпретируемые языки могут быть большим упрощением и испытательным стендом. Rubular построен на Ruby, но является хорошим быстрым способом тестирования и проверки: http://www.rubular.com/
Кроме того, купите последнее издание книги О'Рейли «Освоение регулярных выражений». Вы хотите потратить время, чтобы понять первые 3 или 4 главы. Все, что после этого будет основано на опыте высоко оптимизированного использования RegEx.
Часто серию небольших, более простых в управлении RegExes легче поддерживать и отлаживать.
источник
Вот расширение String, которое проверяет электронную почту в Swift.
Скопировано из ответа на: Проверьте, что адрес электронной почты действителен на iOS
источник
NSPredicate
iOS 2.0 не былоВы не должны пытаться использовать регулярные выражения для проверки электронной почты. С постоянно меняющимися TLD ваш валидатор является либо неполным, либо неточным. Вместо этого вы должны использовать
NSDataDetector
библиотеки Apple, которые возьмут строку и попытаются увидеть, есть ли какие-либо известные поля данных (электронные письма, адреса, даты и т. Д.). Apple SDK сделает все возможное, чтобы идти в ногу с TLD, и вы сможете воспользоваться их усилиями !! :)Кроме того, если iMessage (или любое другое текстовое поле) не считает, что это электронная почта, следует ли вам рассматривать электронную почту?
Я поместил эту функцию в
NSString
категорию, поэтому строка, которую вы тестируете, являетсяself
.или как быстрое
String
расширениеисточник
validate email objective-c
, этот вопрос является третьим результатом. Некоторые вещи в интернете не стареют. :-)NSDataDetector
не существовало в iOS 2.0, о котором этот вопрос был / есть.источник
NSPredicate
не существовала в iOS 2; он не был добавлен до iOS 3.