128 votes

Comment vérifier que le texte de edittext est une adresse email ou non ?

Comment vérifier le texte de edittext est une adresse e-mail ou non sans utiliser javascript et expression régulière ? Ici, j'ai utilisé inputtype="textEmailAddress" cela fonctionne mais aucun message d'erreur ne s'affiche.

2 votes

La réponse de PointerNull ci-dessous est certainement la réponse raisonnable et moderne à cette question ?

1 votes

@JoeBlow oui je suis d'accord, mais il y a une quantité limitée de temps que le "demandeur" peut changer la réponse convenue.....

437voto

Pointer Null Points 14229

Sur Android 2.2+, utilisez ceci :

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

par exemple :

EditText emailid = (EditText) loginView.findViewById(R.id.login_email);
String getEmailId = emailid.getText().toString();

// Check if email id is valid or not
if (!isEmailValid(getEmailId)){
    new CustomToast().Show_Toast(getActivity(), loginView,
        "Your Email Id is Invalid.");
}

0 votes

Wow. Merci, monsieur.

240voto

Andy Points 2168
/**
 * 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\\-]+\\.)+[A-Z]{2,4}$";
    Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher(email);
    return matcher.matches();
}

Passez votre texte d'édition dans cette fonction.

pour la vérification de l'adresse électronique, il faut une authentification côté serveur.


Note il existe maintenant une méthode intégrée dans Android, voir les réponses ci-dessous.

7 votes

String met en œuvre CharSequence donc je pense que le casting de email à inputStr est redondant.

0 votes

Avec l'introduction de nouveaux domaines de premier niveau comportant plus de 2 à 4 caractères, il est nécessaire de mettre à jour ce système. Il suffit de remplacer les {2,4}" par un "+". (par exemple, joe@century21.realtor)

0 votes

N'utilisez pas d'expressions régulières lors de la validation des adresses e-mail (voir stackoverflow.com/a/201378/2003763 )

13voto

Rashid Ali Points 100

Veuillez suivre les étapes suivantes

Étape 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>

Étape 2 :

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

Étape 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)
    });

}

}

12voto

Andrea Baccega Points 5358

J'ai écrit une bibliothèque qui étend EditText qui supporte nativement certaines méthodes de validation et est en fait très flexible.

En cours, au moment où j'écris, nativement soutenu (par attributs xml ) sont des méthodes de validation :

  1. regexp : pour une regexp personnalisée
  2. numérique pour un champ uniquement numérique
  3. alpha : pour un champ uniquement alpha
  4. alphaNumérique Devinez quoi ?
  5. e-mail : vérifie que le champ est un courriel valide
  6. Carte de crédit : vérifie que le champ contient une carte de crédit valide en utilisant l'algorithme de Luhn
  7. téléphone : vérifie que le champ contient un numéro de téléphone valide
  8. nom de domaine : vérifie que le champ contient un nom de domaine valide ( passe toujours le test dans le niveau API < 8 )
  9. ipAddress : vérifie que le champ contient une adresse IP valide webUrl : vérifie que le champ contient une url valide ( passe toujours le test en API Level < 8 )
  10. nocheck : Il ne vérifie rien. (Par défaut)

Vous pouvez le consulter ici : https://github.com/vekexasia/Android-form-edittext

J'espère que vous l'apprécierez :)

Dans la page que j'ai liée, vous trouverez également un exemple de validation d'email. Je vais copier le snippet relatif ici :

<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"
       />  

Il existe également une application de test qui présente les possibilités de la bibliothèque.

Voici une capture d'écran de l'application validant le champ email.

email validation done thorugh xml+library

2voto

kyogs Points 2147

Ici l'email est votre 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();

    }

0 votes

L'auteur du RFC actuel, John Klensin, a une adresse électronique que vous refusez. Elle contient un signe +.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X