Каков хороший метод проверки адреса электронной почты (например, из поля ввода пользователя) в Android? org.apache.commons.validator.routines.EmailValidator , по-видимому, недоступен. Существуют ли другие библиотеки, которые делают это, которые уже включены в Android, или мне нужно использовать RegExp?
321
Ответы:
Не используйте рег-экс.
По-видимому, следующее - это reg-ex, который правильно проверяет большинство адресов электронной почты, которые соответствуют RFC 2822 (и все равно не будет работать с такими вещами, как «user@gmail.com.nospam», как и org.apache.commons.validator. routines.EmailValidator)
Возможно, самый простой способ проверить электронную почту - просто отправить электронное письмо с подтверждением по указанному адресу, и если оно будет возвращено, оно не будет действительным.
Если вы хотите выполнить некоторые базовые проверки, вы можете просто проверить, что это в форме
*@*
Если у вас есть некоторая валидация, специфичная для бизнес-логики, вы можете выполнить ее с помощью регулярного выражения, например, это должна быть учетная запись gmail.com или что-то в этом роде.
источник
user@gmail.com.nospam
, и даже больше, например, .museum. Я что-то упускаю? Я не хочу блокировать ни одного из моих пользователей, не подтвердив их действительный адрес электронной почты, но, похоже, это работает для всего, что я могу придумать.Другой вариант - встроенные шаблоны, начиная с уровня API 8:
Шаблоны видимого источника
ИЛИ
Однолинейное решение от @AdamvandenHoven:
источник
(target == null)
сTextUtils.isEmpty(target)
:)email@111.222.333.44444
в качестве действительногоСледующий шаблон используется в почте K-9:
Вы можете использовать функцию
источник
android.util.Patterns.EMAIL_ADDRESS
?[a-zA-Z0-9+._%-]
а другие[a-zA-Z0-9-]
i
из@gmail.com
него, вернет true. То же самое в `@yaho.com.Начиная с API 8 (Android 2.2) существует шаблон: android.util.Patterns.EMAIL_ADDRESS http://developer.android.com/reference/android/util/Patterns.html
Таким образом, вы можете использовать его для проверки yourEmailString:
возвращает true, если адрес электронной почты действителен
UPD: этот исходный код шаблона:
обратитесь к: http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.2_r1.1/android/util/Patterns.java
Таким образом, вы можете создать его самостоятельно для совместимости с API <8.
источник
Теперь у нас есть простое средство сравнения шаблонов электронной почты
источник
Используйте простой однострочный код для проверки электронной почты
использовать как ...
источник
Это предложения Android Studio:
источник
email == null
повторяется, так как TextUtils проверяет ее внутриВы можете использовать регулярное выражение для этого. Что-то вроде следующего.
Примечание. Проверьте приведенное выше регулярное выражение, не используйте его как есть.
источник
"Example Guy" <guy@example.com>
. Хотя технически вы можете проверять электронную почту с помощью регулярных выражений , это немного абсурдно.используйте android: inputType = "textEmailAddress", как показано ниже:
и:
источник
Вы могли бы написать расширение Kotlin как это:
А потом назовите это так:
источник
В
Patterns
пакете есть класс,android.util
который здесь полезен. Ниже приведен метод, который я всегда использую для проверки электронной почты и многих других вещей.источник
Вызовите этот метод, где вы хотите проверить идентификатор электронной почты.
источник
Для проверки электронной почты андроид предоставляет несколько шаблонов InBuilt. Но он поддерживает только API уровня 8 и выше .
Вот код для использования этого шаблона для проверки правильности электронной почты.
Убедитесь, что после выполнения этого метода вы должны убедиться, что если этот метод возвращает true, вы разрешаете сохранять электронную почту, а если этот метод возвращает false, отображать сообщение о том, что электронная почта «Неверная».
Надеюсь, вы получите ответ, спасибо.
источник
Могу я НАСТОЯТЕЛЬНО рекомендовать вам не пытаться «проверять» адреса электронной почты, вы просто начнете много работать без веской причины.
Просто убедитесь, что введенное вами значение не нарушит ваш собственный код - например, нет пробелов или недопустимых символов, которые могут вызвать исключение.
Все остальное просто заставит вас много работать за минимальную отдачу ...
источник
Подтвердите формат вашего адреса электронной почты. Ex-virag@gmail.com
источник
источник
Если вы используете API 8 или выше, вы можете использовать легкодоступный
Patterns
класс для проверки электронной почты. Образец кода:Случайно, если вы даже поддерживаете уровень API ниже 8, вы можете просто скопировать
Patterns.java
файл в свой проект и сослаться на него. Вы можете получить исходный кодPatterns.java
из этой ссылкиисточник
Вот
android.util.Patterns.EMAIL_ADDRESS
String
будет соответствовать, еслиПример специального письма
Вы можете изменить этот шаблон для вашего случая, а затем подтвердить
источник
Попробуйте этот простой метод, который не может принять адрес электронной почты, начинающийся с цифр:
источник
Попробуйте этот код .. Это действительно работает ..
источник
Следующее было использовано мной. Тем не менее, он содержит дополнительные символы, чем обычные письма, но это было требование для меня.
Ответ на этот вопрос: - Требование подтвердить адрес электронной почты с заданными баллами
Explanation-
источник
Ключевым моментом здесь является то, что вы хотите полностью подтвердить адрес электронной почты. Вы не просто хотите проверить правильность синтаксиса, вы хотите проверить, является ли адрес электронной почты реальным.
Две очевидные причины: реальные пользователи часто неправильно вводят свои адреса электронной почты, а некоторые пользователи могут вводить поддельные адреса электронной почты. Следовательно, вы хотите выполнить синтаксическую проверку и проверку существования.
Лучший способ сделать это, как я обнаружил на Android, - использовать для этого бесплатный API Cloudmersive Validation .
Код выглядит так:
Я использую это во всех своих приложениях, и это здорово, потому что я могу проверять адреса электронной почты в UX в точке входа.
источник
Простейшее решение Kotlin с использованием функций расширения:
и тогда вы можете проверить, как это:
источник
Обратите внимание, что большинство регулярных выражений недопустимы для международных доменных имен (IDN) и новых доменов верхнего уровня, таких как .mobi или .info (если вы проверяете коды стран или .org, .com, .gov и т. Д.).
Действительная проверка должна отделять локальную часть (перед знаком) и часть домена. Также следует учитывать максимальную длину локальной части и домена (в сумме 255 символов, включая знак at).
Наилучший подход - преобразовать адрес в совместимый с IDN формат (если требуется), проверить локальную часть (RFC), проверить длину адреса и проверить доступность домена (поиск DNS MX) или просто отправить электронное письмо. ,
источник
Класс Linkify имеет несколько довольно полезных вспомогательных методов, которые могут быть полезны, в том числе регулярные выражения, предназначенные для сбора телефонных номеров и адресов электронной почты, и тому подобное:
http://developer.android.com/reference/android/text/util/Linkify.html
источник
Я использовал следующий код. Это работает. Надеюсь, это поможет вам.
и используйте следующий метод. Это возвращает true, если электронная почта действительна.
источник
электронная почта - это ваша электронная почта.
источник
Для любителей регулярных выражений самый лучший (например, совместимый с RFC 822) шаблон электронной почты, который я когда-либо обнаруживал с тех пор, - следующий (до того, как PHP предоставил фильтры). Я думаю, это легко перевести на Java - для тех, кто играет с API <8:
источник
Вы можете очень легко выполнить любой тип проверки в Android с помощью файла oval.jar. OVal - это прагматичная и расширяемая платформа валидации общего назначения для любых объектов Java.
перейдите по этой ссылке: http://oval.sourceforge.net/userguide.html
Вы можете скачать это здесь: http://oval.sourceforge.net/userguide.html#download
Вы можете использовать проверку, устанавливая теги в переменных
источник
Вы также можете использовать
Если адрес электронной почты недействителен, он выдаст исключение AddressException .
К сожалению, Android не поддерживает jndi-dns , но просто чтобы дать вам представление о более мощной проверке электронной почты, вы можете использовать ее для проверки почтового домена. Может быть, гуру Android мог бы помочь и показать, есть ли подобные альтернативы ... Пример реализации с «обычной» java доступен здесь .
РЕДАКТИРОВАТЬ
Я только что понял, что javax.mail не поддерживает ни один ... Но этот пост показывает обходной путь .
источник