Wie können wir auftreten Email Validation
an edittext
in android
? Ich habe Google & SO durchgesehen, aber ich habe keinen einfachen Weg gefunden, es zu validieren.
E-Mail-Adressvalidierung in Android auf EditText [duplicate]
Rahul Baradia
Benutzer1737884
Java:
public static boolean isValidEmail(CharSequence target) {
return (!TextUtils.isEmpty(target) && Patterns.EMAIL_ADDRESS.matcher(target).matches());
}
Kotlin:
fun CharSequence?.isValidEmail() = !isNullOrEmpty() && Patterns.EMAIL_ADDRESS.matcher(this).matches()
Bearbeiten: Es funktioniert ab Android 2.2+ !!
Edit: Fehlt hinzugefügt ;
-
+1 für die Verwendung der integrierten Funktion. würde ich auch ersetzen
target == null
mitTextUtils.isEmpty(target)
.– rciovati
13. April 13 um 9:02 Uhr
-
einzeilige Lösung
return !TextUtils.isEmpty(target) && Patterns.EMAIL_ADDRESS.matcher(target).matches();
– Madan Sapkota
20. Juni 15 um 5:44 Uhr
-
Dieses eingebaute Muster ist leider unvollständig. Beispiel: „a@a“. würde passieren. Überprüfen Sie diese Frage auf eine “gut genug für die meisten” und eine RFC822-konforme Antwort.
– MPelletier
18. Juni 17 um 20:50 Uhr
-
oder ein einzelner Liner
boolean result = !TextUtils.isEmpty(target) && android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches();
🙂– Faisal Naseer
30. Oktober 17 um 10:56 Uhr
-
@MPelletier Nun, ich habe es selbst getestet und “a@a”. wird nicht passieren
– HendraWD
31. März 18 um 13:16 Uhr
Rahul Baradia
Um die E-Mail-Validierung durchzuführen, haben wir viele Möglichkeiten, aber die einfachsten und einfachsten sind zwei Methoden.
1- Verwenden EditText(....).addTextChangedListener
die bei jedem Eingang in an triggert EditText box
dh email_id ist ungültig oder gültig
/**
* Email Validation ex:- [email protected]
*/
final EditText emailValidate = (EditText)findViewById(R.id.textMessage);
final TextView textView = (TextView)findViewById(R.id.text);
String email = emailValidate.getText().toString().trim();
String emailPattern = "[a-zA-Z0-9._-]+@[a-z]+\.+[a-z]+";
emailValidate .addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
if (email.matches(emailPattern) && s.length() > 0)
{
Toast.makeText(getApplicationContext(),"valid email address",Toast.LENGTH_SHORT).show();
// or
textView.setText("valid email");
}
else
{
Toast.makeText(getApplicationContext(),"Invalid email address",Toast.LENGTH_SHORT).show();
//or
textView.setText("invalid email");
}
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// other stuffs
}
public void onTextChanged(CharSequence s, int start, int before, int count) {
// other stuffs
}
});
2- Einfachste Methode mit if-else
Kondition. Nehmen Sie die EditText-Feldzeichenfolge mit getText() und vergleichen Sie sie mit dem für E-Mails bereitgestellten Muster. Wenn das Muster nicht übereinstimmt oder übereinstimmt, wird durch Klicken auf die Schaltfläche eine Nachricht angezeigt. Es wird nicht bei jeder Eingabe eines Zeichens in das EditText – Feld ausgelöst . einfaches Beispiel unten gezeigt.
final EditText emailValidate = (EditText)findViewById(R.id.textMessage);
final TextView textView = (TextView)findViewById(R.id.text);
String email = emailValidate.getText().toString().trim();
String emailPattern = "[a-zA-Z0-9._-]+@[a-z]+\.+[a-z]+";
// onClick of button perform this simplest code.
if (email.matches(emailPattern))
{
Toast.makeText(getApplicationContext(),"valid email address",Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(getApplicationContext(),"Invalid email address", Toast.LENGTH_SHORT).show();
}
-
Danke, es hat mir sehr geholfen
– C Schärfer
23. August 13 um 10:42 Uhr
-
Zweitens einfach und gut … vielen Dank
– Srihari
31. Juli 14 um 08:11 Uhr
-
Dies ist kein gültiges E-Mail-Muster. schlägt bei [email protected] fehl.
– Jijo Thomas
23. Juli 16 um 19:55 Uhr
-
@JijoThomas danke.
– Rahul Baradia
25. Juli 16 um 6:06 Uhr
-
Hiren Patel
Ich habe es so gemacht:
Füge das hinzu Methode zu prüfe ob E-Mail-Addresse ist gültig oder nicht:
private boolean isValidEmailId(String email){
return Pattern.compile("^(([\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})$").matcher(email).matches();
}
Prüfen Sie jetzt mit Schnur von Text bearbeiten:
if(isValidEmailId(edtEmailId.getText().toString().trim())){
Toast.makeText(getApplicationContext(), "Valid Email Address.", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(getApplicationContext(), "InValid Email Address.", Toast.LENGTH_SHORT).show();
}
Fertig
-
Dieser funktioniert für mich, weil er “[email protected]” akzeptiert.
– kein Profil
2. Februar 21 um 8:13 Uhr
Verwenden Sie diese Methode zur Validierung Ihres E-Mail-Formats. Übergeben Sie die E-Mail als Zeichenfolge, sie gibt wahr zurück, wenn das Format korrekt ist, andernfalls falsch.
/**
* validate your email address format. [email protected]
*/
public boolean emailValidator(String email)
{
Pattern pattern;
Matcher matcher;
final 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();
}
Jay Thakkar
Versuche dies:
if (!emailRegistration.matches("[a-zA-Z0-9._-]+@[a-z]+.[a-z]+")) {
editTextEmail.setError("Invalid Email Address");
}
-
Dies funktioniert nicht für E-Mails mit mehreren Punkten in der Domäne wie [email protected] . Es stimmt auch mit Dingen ohne Punkte wie name@gmailcom überein
– Matian
19. April 15 um 9:51 Uhr
-
Los geht’s, haben Sie Ihre Regex so korrigiert, dass sie den wörtlichen Punkt anstelle des Punkts “akzeptiere hier jedes Zeichen” enthält.
– Zombiesauce
25. Juli 2020 um 16:52 Uhr
Gaurav Arora
Verwenden Sie diese Methode, um die E-MAIL zu validieren: –
public static boolean isEditTextContainEmail(EditText argEditText) {
try {
Pattern pattern = Pattern.compile("^[_A-Za-z0-9-]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$");
Matcher matcher = pattern.matcher(argEditText.getText());
return matcher.matches();
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
Lassen Sie mich wissen, wenn Sie Fragen haben?
-
Dies funktioniert nicht für E-Mails mit mehreren Punkten in der Domäne wie [email protected] . Es stimmt auch mit Dingen ohne Punkte wie name@gmailcom überein
– Matian
19. April 15 um 9:51 Uhr
-
Los geht’s, haben Sie Ihre Regex so korrigiert, dass sie den wörtlichen Punkt anstelle des Punkts “akzeptiere hier jedes Zeichen” enthält.
– Zombiesauce
25. Juli 2020 um 16:52 Uhr
NagarjunaReddy
public static boolean isEmailValid(String email) {
boolean isValid = false;
String expression = "^[\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;
}
-
Danke für Anregungen..
– Rahul Baradia
18. Oktober 12 um 5:33 Uhr
-
Das hat bei mir perfekt funktioniert, vielleicht macht der Ausdruck den Unterschied.
– Sagar G.
20. Juni 13 um 10:22 Uhr
.
android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches();
– Pratik Butani
16. Dezember 13 um 10:40 Uhr