¿Cuál es una buena técnica para validar una dirección de correo electrónico (por ejemplo, desde un campo de entrada del usuario) en Android? org.apache.commons.validator.routines.EmailValidator no parece estar disponible. ¿Hay alguna otra biblioteca haciendo esto que ya esté incluida en Android o tendría que usar RegExp?
320
Respuestas:
No uses un reg-ex.
Aparentemente, el siguiente es un registro que valida correctamente la mayoría de las direcciones de correo electrónico que cumplen con RFC 2822 , (y aún fallará en cosas como "[email protected]", como lo hará org.apache.commons.validator. rutinas.Validator de correo electrónico)
Posiblemente, la forma más fácil de validar un correo electrónico es simplemente enviar un correo electrónico de confirmación a la dirección proporcionada y que rebote y luego no sea válido.
Si desea realizar algunas comprobaciones básicas, puede comprobar que está en el formulario
*@*
Si tiene alguna validación específica de lógica empresarial, puede realizarla utilizando una expresión regular, por ejemplo, debe ser una cuenta de gmail.com o algo así.
fuente
[email protected]
e incluso más tiempo como .museum. ¿Me estoy perdiendo de algo? No quiero bloquear a ninguno de mis usuarios al no validar su dirección de correo electrónico válida, pero esto parece estar funcionando para todo lo que se me ocurre.Otra opción son los patrones integrados que comienzan con el nivel 8 de API:
Fuente visible de patrones
O
Solución de una línea de @AdamvandenHoven:
fuente
(target == null)
conTextUtils.isEmpty(target)
:)[email protected]
como correo electrónico válidoEl siguiente patrón se usa en el correo K-9:
Puedes usar la función
fuente
android.util.Patterns.EMAIL_ADDRESS
?[a-zA-Z0-9+._%-]
y las demás a[a-zA-Z0-9-]
i
de@gmail.com
ella devolverá verdadero. Lo mismo en `@yaho.com.Desde API 8 (android 2.2) hay un patrón: android.util.Patterns.EMAIL_ADDRESS http://developer.android.com/reference/android/util/Patterns.html
Para que pueda usarlo para validar suEmailString:
devuelve verdadero si el correo electrónico es válido
UPD: este código fuente de patrón es:
consulte: http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.2_r1.1/android/util/Patterns.java
Para que pueda compilarlo usted mismo para compatibilidad con API <8.
fuente
Tenemos un simple patrón de correspondencia de correo electrónico ahora
fuente
Use un código simple de una línea para la validación de correo electrónico
usar como ...
fuente
Estas son sugerencias de Android Studio:
fuente
email == null
es redandunt como textutils cheques dentroPuede usar expresiones regulares para hacerlo. Algo como lo siguiente.
Nota: Verifique la expresión regular dada anteriormente, no la use como está.
fuente
"Example Guy" <[email protected]>
. Si bien técnicamente puede validar el correo electrónico con una expresión regular , es un poco absurdo hacerlo.use android: inputType = "textEmailAddress" como se muestra a continuación:
y:
fuente
Podrías escribir una extensión de Kotlin como esta:
Y luego llámalo así:
fuente
Hay una
Patterns
clase en el paqueteandroid.util
que es beneficiosa aquí. A continuación se muestra el método que siempre uso para validar el correo electrónico y muchas otras cosas.fuente
Llame a este método donde desee validar la identificación de correo electrónico.
fuente
Para una validación de correo electrónico, Android proporciona un patrón InBuilt. Pero solo es compatible con el nivel de API 8 y superior .
Aquí hay un código para usar ese patrón para verificar la validación del correo electrónico.
Asegúrese de que después de ejecutar este método, debe verificar que si este método devuelve verdadero, entonces permite guardar el correo electrónico y si este método devuelve falso , muestre el mensaje de que el correo electrónico es "No válido".
Espero que obtengas tu respuesta, gracias.
fuente
¿Puedo recomendar ENCARECIDAMENTE que no intentes 'validar' las direcciones de correo electrónico, solo te meterás en un montón de trabajo sin una buena razón?
Solo asegúrese de que lo que ingrese no rompa su propio código, por ejemplo, sin espacios o caracteres ilegales que puedan causar una excepción.
Cualquier otra cosa solo le causará mucho trabajo por un retorno mínimo ...
fuente
Valide su formato de dirección de correo electrónico. [email protected]
fuente
fuente
Si está utilizando API 8 o superior, puede usar la
Patterns
clase fácilmente disponible para validar el correo electrónico. Código de muestra:Por casualidad, si incluso admite un nivel de API inferior a 8, simplemente puede copiar el
Patterns.java
archivo en su proyecto y hacer referencia a él. Puede obtener el código fuentePatterns.java
de este enlacefuente
Aquí está
android.util.Patterns.EMAIL_ADDRESS
String
lo igualará siEjemplo de correo electrónico de un partido especial
Puede modificar este patrón para su caso y luego validarlo
fuente
Pruebe este método simple que no puede aceptar la dirección de correo electrónico que comienza con dígitos:
fuente
Prueba este código ... Realmente funciona ...
fuente
Lo siguiente fue usado por mí. Sin embargo, contiene caracteres adicionales que los correos electrónicos normales, pero esto fue un requisito para mí.
Respuesta a esta pregunta: - Requisito para validar una dirección de correo electrónico con puntos dados
Explicación-
fuente
La clave aquí es que desea validar completamente la dirección de correo electrónico. No solo desea verificar si la corrección sintáctica es correcta, sino verificar si la dirección de correo electrónico es real.
Dos razones obvias: los usuarios reales a menudo escriben mal sus direcciones de correo electrónico y algunos usuarios pueden ingresar direcciones de correo electrónico falsas. Por lo tanto, desea hacer una verificación sintáctica y una verificación de existencia.
La mejor manera de hacer esto que he encontrado en Android es usar la API gratuita de validación de Cloudmersive para esto.
El código se ve así:
Estoy usando esto en todas mis aplicaciones y es genial porque puedo validar las direcciones de correo electrónico en la UX en el punto de entrada.
fuente
La solución más simple de Kotlin usando funciones de extensión:
y luego puedes validar así:
fuente
Tenga en cuenta que la mayoría de las expresiones regulares no son válidas para nombres de dominio internacionales (IDN) y nuevos dominios de nivel superior como .mobi o .info (si verifica los códigos de país o .org, .com, .gov, etc.).
Una verificación válida debe separar la parte local (antes del signo de at) y la parte del dominio. También debe considerar la longitud máxima de la parte local y el dominio (en suma 255 caracteres, incluido el signo de at).
El mejor enfoque es transformar la dirección en un formato compatible con IDN (si es necesario), validar la parte local (RFC), verificar la longitud de la dirección y verificar la disponibilidad del dominio (búsqueda DNS MX) o simplemente enviar un correo electrónico .
fuente
La clase Linkify tiene algunos métodos auxiliares bastante útiles que pueden ser relevantes, incluidas las expresiones regulares diseñadas para recoger números de teléfono y direcciones de correo electrónico, entre otras:
http://developer.android.com/reference/android/text/util/Linkify.html
fuente
He usado el siguiente código. Esto funciona bien. Espero que esto te ayude.
y utilice el siguiente método. Esto devuelve verdadero si el correo electrónico es válido.
fuente
El correo electrónico es su correo electrónico.
fuente
Para los amantes de las expresiones regulares, el mejor patrón de correo electrónico (por ejemplo, compatible con RFC 822) que he encontrado desde ahora es el siguiente (antes de los filtros suministrados por PHP). Supongo que es fácil traducir esto a Java, para aquellos que juegan con API <8:
fuente
Puede hacer cualquier tipo de validación en Android muy fácilmente mediante el archivo oval.jar. OVal es un marco de validación de propósito general pragmático y extensible para cualquier tipo de objetos Java.
siga este enlace: http://oval.sourceforge.net/userguide.html
Puede descargar esto desde aquí: http://oval.sourceforge.net/userguide.html#download
Puede usar la validación configurando etiquetas en variables
fuente
También podrías usar
Si el correo electrónico no es válido, arrojará una excepción de dirección .
Desafortunadamente, Android no admite jndi-dns , pero solo para darle una idea de una validación de correo electrónico más potente, puede usarla para validar el dominio de correo electrónico. Tal vez un gurú de Android podría ayudar y mostrar si hay alternativas similares ... Un ejemplo de implementación con Java "regular" está disponible aquí .
EDITAR
Me acabo de dar cuenta de que javax.mail tampoco es compatible ... Pero esta publicación muestra una solución alternativa .
fuente