2016-04-27 2 views
0

ich einen regulären Ausdruck habe eine E-Mail zu überprüfen und, wenn ich es laufen, es sagt mir ständig, dass seine eine ungültige E-Mail-Adresse, aber die E-Mail korrekt istAndroid E-Mail-Validierung mit regulären Ausdrücken nicht funktionieren

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

final String Email = email.getText().toString(); 

if (!Email.matches("^([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5})$")) 
    { 
     email.requestFocus(); 
     email.setError("INVALID EMAIL ADDRESS"); 
    } 

niemand weiß, dass es mir den Fehler geben würde, obwohl es richtig ist?

+0

[scheint zu funktionieren] (http://ideone.com/rppPjU) – BackSlash

+0

Aber wenn ich es auf meinem Android laufen druckt er nur den Fehler ungültige E-Mail-Adresse – Michelle

+0

Haben Sie am Ende einen Platz haben? Das würde falsch zurückkommen. Was ist der Inhalt von 'Email'? –

Antwort

0

versuchen Sie dies stattdessen. Dies sollte alle versteckten Leerzeichen/Zeichen nach der E-Mail entfernen.

Email.matches 
    ("([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5}).*")) 

nach http://developer.android.com/reference/java/lang/String.html

public boolean matches (String regular)

Added in API-Ebene 1 wird getestet, ob diese Zeichenfolge regular die gegebene übereinstimmt. Diese Methode gibt nur dann true zurück, wenn der reguläre Ausdruck mit der gesamten Eingabezeichenfolge übereinstimmt. Ein häufiger Fehler ist angenommen, dass diese Methode verhält sich wie enthält (CharSequence); Wenn Sie irgendwo innerhalb der Eingabezeichenfolge übereinstimmen möchten, müssen Sie * den Anfang und das Ende Ihres regulären Ausdrucks hinzufügen. Siehe Übereinstimmungen (String, CharSequence).

+0

Das schien nicht Arbeit entweder – Michelle

+1

@Michelle, können Sie ein Log.d ("TAG", "->" + E-Mail + "<-"); kurz bevor die Spiele angerufen werden? dann filtere mit "TAG". –

+0

Wie filtere ich nach "TAG"? – Michelle

Verwandte Themen