Was ist eine gute Technik zum Überprüfen einer E-Mail-Adresse (z. B. aus einem Benutzereingabefeld) in Android? org.apache.commons.validator.routines.EmailValidator scheint nicht verfügbar zu sein. Gibt es andere Bibliotheken, die dies tun und bereits in Android enthalten sind, oder müsste ich RegExp verwenden?
320
Antworten:
Verwenden Sie kein Reg-Ex.
Anscheinend ist das Folgende ein reg-ex, das die meisten E-Mail-Adressen, die RFC 2822 entsprechen, korrekt validiert (und bei Dingen wie "[email protected]" ebenso fehlschlägt wie org.apache.commons.validator. routines.EmailValidator)
Möglicherweise der einfachste Weg, eine E-Mail zu validieren, um einfach eine Bestätigungs-E-Mail an die angegebene Adresse zu senden, und sie springt, dann ist sie nicht gültig.
Wenn Sie einige grundlegende Überprüfungen durchführen möchten, können Sie einfach überprüfen, ob das Formular vorhanden ist
*@*
Wenn Sie eine geschäftslogikspezifische Validierung haben, können Sie diese mithilfe eines regulären Ausdrucks durchführen, z. B. muss es sich um ein gmail.com-Konto oder etwas anderes handeln.
quelle
[email protected]
und noch länger als .museum. Vermisse ich etwas Ich möchte keinen meiner Benutzer blockieren, indem ich seine gültige E-Mail-Adresse nicht überprüfe, aber dies scheint für alles zu funktionieren, was mir einfällt.Eine weitere Option sind die integrierten Muster, die mit API Level 8 beginnen:
Muster sichtbare Quelle
ODER
Einzeilige Lösung von @AdamvandenHoven:
quelle
(target == null)
mitTextUtils.isEmpty(target)
:)[email protected]
als gültige E-MailDas nächste Muster wird in K-9-Mail verwendet:
Sie können die Funktion verwenden
quelle
android.util.Patterns.EMAIL_ADDRESS
?[a-zA-Z0-9+._%-]
und die anderen zu[a-zA-Z0-9-]
i
aus@gmail.com
es wird true zurück. Gleiches gilt für `@yaho.com.Seit API 8 (android 2.2) gibt es ein Muster: android.util.Patterns.EMAIL_ADDRESS http://developer.android.com/reference/android/util/Patterns.html
Sie können es also verwenden, um Ihren E-Mail-String zu validieren:
Gibt true zurück, wenn die E-Mail gültig ist
UPD: Dieser Musterquellcode lautet:
Weitere Informationen finden Sie unter : http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.2_r1.1/android/util/Patterns.java
Sie können es also selbst erstellen, um die Kompatibilität mit API <8 zu gewährleisten.
quelle
Wir haben jetzt einen einfachen E-Mail-Mustervergleich
quelle
Verwenden Sie einen einfachen einzeiligen Code für die E-Mail-Validierung
benutze wie ...
quelle
Dies sind Vorschläge für Android Studio:
quelle
email == null
ist redandunt als TextUtils es innen prüftSie können dazu reguläre Ausdrücke verwenden. So etwas wie das Folgende.
Hinweis: Überprüfen Sie den oben angegebenen regulären Ausdruck und verwenden Sie ihn nicht so, wie er ist.
quelle
"Example Guy" <[email protected]>
. Sie können E-Mails zwar technisch mit einem regulären Ausdruck validieren , dies ist jedoch etwas absurd.benutze android: inputType = "textEmailAddress" wie folgt:
und:
quelle
Sie könnten eine Kotlin-Erweiterung wie folgt schreiben:
Und dann nenne es so:
quelle
Es gibt eine
Patterns
Klasse im Paket,android.util
die hier von Vorteil ist. Unten ist die Methode, die ich immer zum Validieren von E-Mails und vielen anderen Dingen verwendequelle
Rufen Sie diese Methode auf, bei der Sie die E-Mail-ID überprüfen möchten.
quelle
Für eine E-Mail-Validierung bietet Android ein InBuilt-Muster an. Es unterstützt jedoch nur API-Level 8 und höher .
Hier ist der Code zur Verwendung dieses Musters zur Überprüfung der E-Mail-Validierung.
Stellen Sie sicher, dass Sie nach dem Ausführen dieser Methode überprüfen sollten, ob Sie das Speichern von E-Mails zulassen , wenn diese Methode true zurückgibt. Wenn diese Methode false zurückgibt, wird die Meldung angezeigt, dass die E-Mail "ungültig" ist.
Hoffe du bekommst deine Antwort, Danke.
quelle
Kann ich DRINGEND empfehlen, dass Sie nicht versuchen, E-Mail-Adressen zu "validieren"? Sie werden sich einfach ohne guten Grund in eine Menge Arbeit stürzen.
Stellen Sie nur sicher, dass die eingegebene Datei Ihren eigenen Code nicht beschädigt - z. B. keine Leerzeichen oder unzulässigen Zeichen, die eine Ausnahme verursachen könnten.
Alles andere wird Ihnen nur viel Arbeit für minimale Rendite verursachen ...
quelle
Überprüfen Sie Ihr E-Mail-Adressformat. [email protected]
quelle
quelle
Wenn Sie API 8 oder höher verwenden, können Sie die sofort verfügbare
Patterns
Klasse zum Überprüfen von E-Mails verwenden. Beispielcode:Wenn Sie sogar API-Level unter 8 unterstützen, können Sie die
Patterns.java
Datei zufällig einfach in Ihr Projekt kopieren und darauf verweisen. Den Quellcode für können SiePatterns.java
über diesen Link erhaltenquelle
Hier ist
android.util.Patterns.EMAIL_ADDRESS
String
wird es passen, wennBeispiel eine spezielle Match-E-Mail
Sie können dieses Muster für Ihren Fall ändern und dann durch validieren
quelle
Versuchen Sie diese einfache Methode, bei der die mit Ziffern beginnende E-Mail-Adresse nicht akzeptiert werden kann:
quelle
Versuchen Sie diesen Code .. Es funktioniert wirklich ..
quelle
Folgendes wurde von mir verwendet. Es enthält jedoch zusätzliche Zeichen als normale E-Mails, aber dies war eine Voraussetzung für mich.
Antwort auf diese Frage: - Anforderung, eine E-Mail-Adresse mit bestimmten Punkten zu validieren
Erläuterung-
quelle
Der Schlüssel hier ist, dass Sie die E-Mail-Adresse vollständig validieren möchten. Sie möchten nicht nur die syntaktische Korrektheit überprüfen, sondern auch überprüfen, ob die E-Mail-Adresse echt ist.
Zwei offensichtliche Gründe: Echte Benutzer geben ihre E-Mail-Adressen häufig falsch ein, und einige Benutzer geben möglicherweise falsche E-Mail-Adressen ein. Daher möchten Sie eine syntaktische Prüfung und eine Existenzprüfung durchführen.
Der beste Weg, dies zu tun, den ich auf Android gefunden habe, ist die Verwendung der kostenlosen Cloudmersive Validation API .
Der Code sieht folgendermaßen aus:
Ich verwende dies in allen meinen Apps und es ist großartig, weil ich die E-Mail-Adressen in der UX zum Zeitpunkt der Eingabe überprüfen kann.
quelle
Einfachste Kotlin-Lösung mit Erweiterungsfunktionen:
und dann können Sie wie folgt validieren:
quelle
Beachten Sie, dass die meisten regulären Ausdrücke nicht für internationale Domainnamen (IDN) und neue Top-Level-Domains wie .mobi oder .info gültig sind (wenn Sie nach Ländercodes oder .org, .com, .gov usw. suchen).
Eine gültige Prüfung sollte den lokalen Teil (vor dem At-Sign) und den Domain-Teil trennen. Sie sollten auch die maximale Länge des lokalen Teils und der Domäne berücksichtigen (insgesamt 255 Zeichen einschließlich des At-Signs).
Der beste Ansatz besteht darin, die Adresse in ein IDN-kompatibles Format umzuwandeln (falls erforderlich), den lokalen Teil (RFC) zu validieren, die Länge der Adresse und die Verfügbarkeit der Domäne zu überprüfen (DNS MX-Suche) oder einfach eine E-Mail zu senden .
quelle
Die Linkify-Klasse verfügt über einige nützliche Hilfsmethoden, die möglicherweise relevant sind, einschließlich regulärer Ausdrücke zum Abrufen von Telefonnummern und E-Mail-Adressen und dergleichen:
http://developer.android.com/reference/android/text/util/Linkify.html
quelle
Ich habe folgenden Code verwendet. Dies funktioniert Gitter. Ich hoffe, dies wird Ihnen helfen.
und verwenden Sie die folgende Methode. Dies gibt true zurück, wenn die E-Mail gültig ist.
quelle
E-Mail ist Ihre E-Mail-ist.
quelle
Für Regex-Liebhaber ist das beste (z. B. im Einklang mit RFC 822) E-Mail-Muster, das ich seitdem gefunden habe, das folgende (bevor PHP Filter bereitstellte). Ich denke, es ist einfach, dies in Java zu übersetzen - für diejenigen, die mit API <8 spielen:
quelle
Sie können jede Art von Validierung in Android sehr einfach mit der Datei oval.jar durchführen. OVal ist ein pragmatisches und erweiterbares Allzweck-Validierungsframework für jede Art von Java-Objekten.
Folgen Sie diesem Link: http://oval.sourceforge.net/userguide.html
Sie können dies von hier aus herunterladen: http://oval.sourceforge.net/userguide.html#download
Sie können die Validierung verwenden, indem Sie Tags in Variablen setzen
quelle
Sie könnten auch verwenden
Wenn die E-Mail nicht gültig ist, wird eine AddressException ausgelöst .
Leider Android unterstützt keine jndi-dns , aber nur Sie von einem leistungsstärkeren E - Mail - Validierung eine Idee zu geben, können Sie es verwenden , um die E - Mail - Domäne zu validieren. Vielleicht könnte ein Android-Guru helfen und zeigen, ob es ähnliche Alternativen gibt ... Eine Beispielimplementierung mit "normalem" Java finden Sie hier .
BEARBEITEN
Ich habe gerade festgestellt, dass javax.mail auch nicht unterstützt wird ... Aber dieser Beitrag zeigt eine Problemumgehung .
quelle