Cómo comprobar el texto de edittext es la dirección de correo electrónico o no?

Cómo comprobar el texto de edittext es la dirección de correo electrónico o no sin usar javascript y la expresión regular? Aquí he utilizado inputtype="textEmailAddress" esto está funcionando, pero no se muestra ningún mensaje de error.

 /** * method is used for checking valid email id format. * * @param email * @return boolean true for valid false for invalid */ public static boolean isEmailValid(String email) { String expression = "^[\\w\\.-]+@([\\w\\-]+\\.)+[AZ]{2,4}$"; Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(email); return matcher.matches(); } 

Pase la cadena de texto de edición en esta función.

Para verificación correcta de correo electrónico, necesita autenticación de servidor


Tenga en cuenta que ahora hay un método integrado en Android, consulte las respuestas a continuación.

En Android 2.2 o más utilice esto:

 boolean isEmailValid(CharSequence email) { return android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches(); } 

Escribí una biblioteca que extiende EditText que apoya nativamente algunos métodos de la validación y es realmente muy flexible.

Los métodos de validación actuales, según escribo, soportados nativamente (a través de atributos xml ) son:

  1. Regexp : para regexp personalizada
  2. Numérico : para un único campo numérico
  3. Alfa : para un campo solo alfa
  4. AlphaNumérico : adivina qué?
  5. Correo electrónico : comprueba que el campo es un correo electrónico válido
  6. CreditCard : comprueba que el campo contiene una tarjeta de crédito válida utilizando el Algoritmo de Luhn
  7. Teléfono : comprueba que el campo contiene un número de teléfono válido
  8. DomainName : comprueba que el campo contiene un nombre de dominio válido (siempre pasa la prueba en el nivel API <8)
  9. IpAddress : comprueba que el campo contiene una dirección IP válida webUrl: comprueba que el campo contiene una url válida (siempre pasa la prueba en el nivel API <8)
  10. Nocheck : No verifica nada. (Defecto)

Puedes consultarlo aquí: https://github.com/vekexasia/android-form-edittext

Espero que lo disfrutes 🙂

En la página que enlazé, también encontrarás un ejemplo de validación de correo electrónico. Copiaré el fragmento relativo aquí:

 <com.andreabaccega.widget.FormEditText style="@android:style/Widget.EditText" whatever:test="email" android:id="@+id/et_email" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/hint_email" android:inputType="textEmailAddress" /> 

También hay una aplicación de prueba que muestra las posibilidades de la biblioteca.

Esta es una captura de pantalla de la aplicación que valida el campo de correo electrónico.

Validación de correo electrónico hecho thorugh xml + library

Siga los siguientes pasos

Paso 1 :

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <EditText android:id="@+id/editText_email" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:layout_below="@+id/textView_email" android:layout_marginTop="40dp" android:hint="Email Adderess" android:inputType="textEmailAddress" /> <TextView android:id="@+id/textView_email" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="30dp" android:text="Email Validation Example" /> </RelativeLayout> 

Paso 2:

 import android.app.Activity; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.widget.EditText; 

Paso 3:

 public class MainActivity extends Activity { private EditText email; private String valid_email; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initilizeUI(); } /** * This method is used to initialize UI Components */ private void initilizeUI() { // TODO Auto-generated method stub email = (EditText) findViewById(R.id.editText_email); email.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void afterTextChanged(Editable s) { // TODO Auto-generated method stub // TODO Auto-generated method stub Is_Valid_Email(email); // pass your EditText Obj here. } public void Is_Valid_Email(EditText edt) { if (edt.getText().toString() == null) { edt.setError("Invalid Email Address"); valid_email = null; } else if (isEmailValid(edt.getText().toString()) == false) { edt.setError("Invalid Email Address"); valid_email = null; } else { valid_email = edt.getText().toString(); } } boolean isEmailValid(CharSequence email) { return android.util.Patterns.EMAIL_ADDRESS.matcher(email) .matches(); } // end of TextWatcher (email) }); } } 

Aquí el email es su email-id.

  public boolean validateEmail(String email) { Pattern pattern; Matcher matcher; String EMAIL_PATTERN = "^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$"; pattern = Pattern.compile(EMAIL_PATTERN); matcher = pattern.matcher(email); return matcher.matches(); } 

El siguiente código debe ser útil para usted.

 String email; check.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { checkEmail(email); if (checkMail) { System.out.println("Valid mail Id"); } } }); } } public static boolean checkEmail(String email) { Pattern EMAIL_ADDRESS_PATTERN = Pattern .compile("[a-zA-Z0-9+._%-+]{1,256}" + "@" + "[a-zA-Z0-9][a-zA-Z0-9-]{0,64}" + "(" + "." + "[a-zA-Z0-9][a-zA-Z0-9-]{0,25}" + ")+"); return EMAIL_ADDRESS_PATTERN.matcher(email).matches(); } 

Apache Commons Validator se puede utilizar como se menciona en las otras respuestas.

Paso: 1) Descargue el archivo jar desde aquí

Paso: 2) Añadirlo a sus libs de proyecto

La importación:

 import org.apache.commons.validator.routines.EmailValidator; 

El código:

 String email = "[email protected]"; boolean valid = EmailValidator.getInstance().isValid(email); 

Y para permitir las direcciones locales ::

 boolean allowLocal = true; boolean valid = EmailValidator.getInstance(allowLocal).isValid(email); 

Para la validación de correo electrónico pruebe esto.

 public boolean checkemail(String email) { Pattern pattern = Pattern.compile(".+@.+\\.[az]+"); Matcher matcher = pattern.matcher(email); return matcher.matches(); } 

Un método sencillo

  private boolean isValidEmail(String email) { String emailRegex ="^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$"; if(email.matches(emailRegex)) { return true; } return false; } 

Public static boolean isEmailValid (String correo electrónico) {boolean isValid = false;

  String expression = "^(([\\w-]+\\.)+[\\w-]+|([a-zA-Z]{1}|[\\w-]{2,}))@" + "((([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\\.([0-1]?" + "[0-9]{1,2}|25[0-5]|2[0-4][0-9])\\." + "([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\\.([0-1]?" + "[0-9]{1,2}|25[0-5]|2[0-4][0-9])){1}|" + "([a-zA-Z]+[\\w-]+\\.)+[a-zA-Z]{2,4})$"; // "^[\\w\\.-]+@([\\w\\-]+\\.)+[AZ]{2,4}$"; CharSequence inputStr = email; Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(inputStr); if (!matcher.matches()) { isValid = true; } return isValid; } 
  I Hope this code is beneficial for you public class Register extends Activity { EditText FirstName, PhoneNo, EmailId,weight; Button Register; private static final Pattern EMAIL_PATTERN = Pattern .compile("^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$"); private static final Pattern USERFIRSTNAME_PATTERN = Pattern .compile("[a-zA-Z0-9]{1,250}"); private static final Pattern PHONE_PATTERN = Pattern .compile("[a-zA-Z0-9]{1,250}"); @Override public void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.register); Register=(Button) findViewById(R.id.register); FirstName=(EditText)findViewById(R.id.person_firstname); PhoneNo =(EditText)findViewById(R.id.phone_no); EmailId=(EditText)findViewById(R.id.email_id); weight=(EditText) findViewById(R.id.weight); Register.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { sFirstName= FirstName.getText().toString(); sPhoneNo= PhoneNo.getText().toString(); sEmailId= EmailId.getText().toString(); sweight= weight.getText().toString(); if(sFirstName.equals("")||sPhoneNo.equals("")||sEmailId.equals("")||sweight.equals("")) { if ((!CheckUsername(sFirstName))) { Toast.makeText(Register.this, "FirstName can not be null",Toast.LENGTH_LONG).show(); } else if ((!Checkphoneno(sPhoneNo))) { Toast.makeText(Register.this, "ENTER VALID mobile no ",Toast.LENGTH_LONG).show(); } else if ((!CheckEmail(sEmailId))) { Toast.makeText(Register.this, "ENTER VALID EMAIL ID",Toast.LENGTH_LONG).show(); } else if ((!Checkweight(sweight))) { Toast.makeText(Register.this, "ENTER Weight in kg",Toast.LENGTH_LONG).show(); } } } private boolean CheckEmail(String sEmailId) { return EMAIL_PATTERN.matcher(sEmailId).matches(); } private boolean CheckUsername(String sFirstName) { return USERFIRSTNAME_PATTERN.matcher(sFirstName).matches(); } private boolean Checkphoneno(String sPhoneNo) { return PHONE_PATTERN.matcher(sPhoneNo).matches(); } private boolean Checkweight(String sweight) { return Weight_PATTERN.matcher(sweight).matches(); } }); 

Puede comprobarlo con una expresión regular

  public boolean isValid(String strEmail) { pattern = Pattern.compile("^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$"); matcher = pattern.matcher(strEmail); if (strEmail.isEmpty()) { return false; } else if (!matcher.matches()) { return false; } else { return true; } } 
 private boolean isValidEmailID(String email) { String PATTERN = "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@"+ "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$"; Pattern pattern = Pattern.compile(PATTERN); Matcher matcher = pattern.matcher(email); return matcher.matches(); } 

Para más validación haga clic aquí

Como se menciona en una de las respuestas, puede usar la clase Patterns como se muestra a continuación:

 public final static boolean isValidEmail(CharSequence target) { if (target == null) return false; return android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches(); } 

Por casualidad si incluso está soportando un nivel API inferior a 8, entonces simplemente puede copiar el archivo Patterns.java en su proyecto y hacer referencia a él. Puedes obtener el código fuente de Patterns.java desde este enlace

  • Color de sugerencia TextInputLayout
  • Android Edittext- Expansión de vanos
  • ¿Cómo eliminar inmediatamente el espacio de un edittext si un usuario presiona el espacio?
  • cómo evitar el teclado suave que muestra auto correcta sugerencia?
  • Android EditText, problema del textWatcher del teclado
  • EditText con SpannableStringBuilder y ImageSpan no funciona bien
  • Los valores de EditText en Android Fragment no se actualizan
  • Deshabilitar la tecla ESPACIO en EditText android
  • Añadir margen mayor a EditText en Android AlertDialog
  • Implementación de Text Watcher para EditText
  • Cómo aplicar el evento de cambio de texto en EditText
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.