Wie überprüfe ich, ob der Text von edittext die E-Mail-Adresse ist oder nicht?

114

Wie kann man den Text der edittextE-Mail-Adresse überprüfen oder nicht, ohne einen javascriptregulären Ausdruck zu verwenden? Hier habe ich verwendet, inputtype="textEmailAddress"dies funktioniert, aber es wird keine Fehlermeldung angezeigt.

Dipak Keshariya
quelle
2
Sicherlich ist die Antwort von PointerNull unten die vernünftige, moderne Antwort hier?
Fattie
1
@ JoeBlow ja, ich stimme zu, aber es gibt eine begrenzte Zeit, in der der "Fragesteller" die vereinbarte Antwort ändern kann ....
AngryITguy

Antworten:

225
/**
 * 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();
}

Übergeben Sie Ihre Bearbeitungstextzeichenfolge in dieser Funktion.

Für die richtige E-Mail-Überprüfung benötigen Sie eine serverseitige Authentifizierung


Beachten Sie, dass es in Android jetzt eine integrierte Methode gibt (siehe Antworten unten).

Andy
quelle
7
Stringimplementiert, CharSequenceso denke ich, dass die Besetzung von emailbis inputStrüberflüssig ist.
Nuala
Mit der Einführung neuer Top-Level-Domains, die länger als 2-4 Zeichen sind, muss dies aktualisiert werden. Ersetzen Sie einfach das {2.4} "durch ein" + "(z. B. [email protected])
Dave Owens
Verwenden Sie keine regulären Ausdrücke, wenn Sie E-Mail-Adressen überprüfen (siehe stackoverflow.com/a/201378/2003763 )
Thibault D.
408

Verwenden Sie unter Android 2.2+ Folgendes:

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

beispielsweise:

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.");
 }
Zeiger Null
quelle
13

Bitte befolgen Sie die folgenden Schritte

Schritt 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>

Schritt 2:

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

Schritt 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)
    });

}

}
Rashid Ali
quelle
12

Ich habe eine Bibliothek geschrieben, die EditText erweitert, die nativ einige Validierungsmethoden unterstützt und tatsächlich sehr flexibel ist.

Aktuelle, während ich schreibe, nativ unterstützte Validierungsmethoden (über XML-Attribute ) sind:

  1. regulärer Ausdruck : für benutzerdefinierten regulären Ausdruck
  2. numerisch : für ein nur numerisches Feld
  3. Alpha : Für ein Nur-Alpha-Feld
  4. alphaNumeric : weißt du was?
  5. E-Mail : Überprüft, ob das Feld eine gültige E-Mail ist
  6. creditCard : Überprüft mithilfe des Luhn-Algorithmus, ob das Feld eine gültige Kreditkarte enthält
  7. Telefon : Überprüft, ob das Feld eine gültige Telefonnummer enthält
  8. Domänenname : Überprüft, ob das Feld einen gültigen Domänennamen enthält (besteht den Test immer in API-Stufe <8).
  9. ipAddress : Überprüft, ob das Feld eine gültige IP-Adresse enthält. webUrl: Überprüft, ob das Feld eine gültige URL enthält (besteht den Test immer in API Level <8).
  10. nocheck : Es prüft nichts. (Standard)

Sie können es hier überprüfen: https://github.com/vekexasia/android-form-edittext

Hoffe es gefällt euch :)

Auf der von mir verlinkten Seite finden Sie auch ein Beispiel für die E-Mail-Validierung. Ich werde das relative Snippet hier kopieren:

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

Es gibt auch eine Test-App, die die Bibliotheksmöglichkeiten zeigt.

Dies ist ein Screenshot der App, die das E-Mail-Feld überprüft.

E-Mail-Validierung erfolgt über XML + Bibliothek

Andrea Baccega
quelle
7

Wie in einer der Antworten erwähnt, können Sie die PatternsKlasse wie folgt verwenden:

public final static boolean isValidEmail(CharSequence target) {
    if (target == null) 
        return false;

    return android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches();
}

Wenn Sie sogar API-Level unter 8 unterstützen, können Sie die Patterns.javaDatei zufällig einfach in Ihr Projekt kopieren und darauf verweisen. Sie können den Quellcode erhalten Patterns.javaaus diesem Link

Mahendra Liya
quelle
4

In Ihrem Fall können Sie die verwenden android.util.Patterns package.

EditText email = (EditText)findViewById(R.id.user_email);

if(Patterns.EMAIL_ADDRESS.matcher(email.getText().toString()).matches())
    Toast.makeText(this, "Email is VALID.", Toast.LENGTH_SHORT).show();
else
    Toast.makeText(this, "Email is INVALID.", Toast.LENGTH_SHORT).show();
Rahul Hindocha
quelle
3

Der folgende Code sollte für Sie nützlich sein.

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();
    }
Parthi
quelle
2

Hier ist E-Mail Ihre E-Mail-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();

    }
Kyogs
quelle
Der Autor des aktuellen E-Mail-RFC, John Klensin, hat eine E-Mail-Adresse, die Sie ablehnen. Es enthält ein + Zeichen.
nicht
2

Apache Commons Validator kann wie in den anderen Antworten erwähnt verwendet werden.

Schritt: 1) Laden Sie die JAR-Datei von hier herunter

Schritt: 2) Fügen Sie es in Ihre Projektbibliotheken ein

Der Import:

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

Der Code:

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

und um lokale Adressen zuzulassen ::

boolean allowLocal = true;
boolean valid = EmailValidator.getInstance(allowLocal).isValid(email);
König der Massen
quelle
2

Versuchen Sie zur Überprüfung der E-Mail-Adresse diesen einfachen Code.

    String email = inputEmail.getText().toString().trim();

    if (!Patterns.EMAIL_ADDRESS.matcher(email).matches())
    {
        inputEmail.setError("Enter Valid Email Address");
        inputEmail.requestFocus();
    }
MUFAzmi
quelle
1

Eine einfache Methode

    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;
}
Justin Aloor
quelle
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();
                }


        });
Dhiraj Kakran
quelle
1
public static boolean isEmailValid(String email) {
    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\\-]+\\.)+[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;
}
Gaurav Mehta
quelle
0

Versuchen Sie dies für die E-Mail-Validierung.

public boolean checkemail(String email)
{

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

}
Niranj Patel
quelle
Sir, bitte testen Sie Ihre Validierung für gfdfg@+*&.com als E-Mail
R Fauzdar
0

Sie können dies durch einen regulären Ausdruck überprüfen

    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;
        }
     }
Gevaria Purva
quelle
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();
}

Für weitere Validierungen klicken Sie hier

Shaktisinh Jadeja
quelle
0

Mit android.util.Patterns und Kotlin ist das sehr einfach. Eine Zeilenfunktion, die einen booleschen Wert zurückgibt.

fun validateEmail(email: String) = Patterns.EMAIL_ADDRESS.matcher(email)
Artem Botnev
quelle