2011-05-25 6 views
91

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í usé inputtype="textEmailAddress" esto está funcionando pero no se muestra ningún mensaje de error.cómo revisar el texto de edittext es la dirección de correo electrónico o no?

+2

Seguramente la respuesta de PointerNull a continuación es la respuesta razonable, moderna, aquí? – Fattie

+1

@JoeBlow Sí, estoy de acuerdo, pero hay una cantidad limitada de tiempo que el "asker" puede cambiar la respuesta acordada ... – giulio

Respuesta

189
/** 
* 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\\.-][email protected]([\\w\\-]+\\.)+[A-Z]{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 la verificación de correo electrónico adecuado que necesita servidor de autenticación lado


Nota Ahora hay un método integrado en Android, ver las respuestas a continuación.

+0

Gracias, Droid He hecho esto. –

+1

esto está funcionando correctamente. –

+7

'String' implementa' CharSequence', así que creo que el molde de 'email' a' inputStr' es redundante. – yoshi

0

para la validación de correo electrónico intente esto.

public boolean checkemail(String email) 
{ 

    Pattern pattern = Pattern.compile("[email protected]+\\.[a-z]+"); 
    Matcher matcher = pattern.matcher(email); 
    return matcher.matches(); 

} 
+0

señor por favor prueba tu validación para [email protected]+*&.com como correo electrónico –

322

En Android 2.2 + Utilice:

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

¡increíble! Realmente útil. –

12

escribí una biblioteca que se extiende EditarTexto que soporta de forma nativa algunos métodos de validación y en realidad es muy flexible.

actual, mientras escribo, (atributos a través xml) forma nativa apoyado métodos de validación son:

  1. expresión regular: la expresión-regular a medida
  2. numérico: para un único campo numérico
  3. alpha: para un solo campo alfa
  4. alphaNumeric: ¿adivina qué?
  5. correo electrónico: comprueba que el campo es un correo electrónico válido
  6. tarjetaCredito: comprueba que el campo contiene una tarjeta de crédito válida utilizando Luhn algoritmo
  7. teléfono: comprueba que el campo contiene un número de teléfono válido
  8. nombreDominio: 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 un válido WebUrl dirección IP : comprueba que el campo contiene una URL válida (siempre pasa la prueba de nivel de API < 8)
  10. nocheck: No comprueba nada.(Por defecto)

Puede verificarlo aquí: https://github.com/vekexasia/android-form-edittext

espero que lo disfruten :)

En la página he vinculado podrás encontrar también un ejemplo para la validación de correo electrónico. Voy a copiar el fragmento relativa 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.

email validation done thorugh xml+library

2

aquí correo electrónico es su correo electrónico-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(); 

    } 
+0

El autor del correo electrónico actual RFC, John Klensin, tiene una dirección de correo electrónico que rechazas. Contiene un signo +. – arnt

1

Un método simple

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; 
} 
1

boolean isEmailValid (email String) public static { 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\\.-][email protected]([\\w\\-]+\\.)+[A-Z]{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; 
} 
1
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(); 
       } 


     }); 
+0

gracias ayuda a resolver mi problema :) –

+0

su bienvenida ... –

11

Por favor, 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) 
    }); 

} 

} 
2

El siguiente código debería 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(); 
    } 
2

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

Paso: 1) Descarga el archivo jar here

Paso: 2) Añadir en sus bibliotecas de proyectos

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); 
0

se puede comprobar por la 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; 
     } 
    } 
0
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(); 
} 

For more validation click here

5

Como se mencionó en una de las respuestas que puede utilizar la clase Patterns de la siguiente manera:

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á apoyando Nivel de API menor que 8, luego puede simplemente copiar el archivo Patterns.java en su proyecto y hacer referencia a él. Puede obtener el código fuente Patterns.java desde this link

Cuestiones relacionadas