Apa teknik yang baik untuk memvalidasi alamat email (mis. Dari bidang input pengguna) di Android? org.apache.commons.validator.routines.EmailValidator tampaknya tidak tersedia. Apakah ada perpustakaan lain yang melakukan ini yang sudah termasuk dalam Android atau haruskah saya menggunakan RegExp?
320
Jawaban:
Jangan gunakan reg-ex.
Rupanya yang berikut ini adalah reg-ex yang secara benar memvalidasi sebagian besar alamat email yang sesuai dengan RFC 2822 , (dan masih akan gagal pada hal-hal seperti "[email protected]", seperti yang akan org.apache.commons.validator. routines.EmailValidator)
Mungkin cara termudah untuk memvalidasi email hanya mengirim email konfirmasi ke alamat yang diberikan dan itu memantul maka itu tidak valid.
Jika Anda ingin melakukan beberapa pemeriksaan dasar, Anda bisa mengeceknya dalam formulir
*@*
Jika Anda memiliki beberapa validasi logika bisnis khusus maka Anda dapat melakukan itu menggunakan regex, misalnya harus menjadi akun gmail.com atau sesuatu.
sumber
[email protected]
, dan bahkan lebih lama lagi seperti .museum. Apakah saya melewatkan sesuatu? Saya tidak ingin memblokir salah satu pengguna saya dengan gagal memvalidasi alamat email mereka yang valid, tetapi ini tampaknya berfungsi untuk apa pun yang dapat saya pikirkan.Opsi lain adalah Pola bawaan yang dimulai dengan API Level 8:
Sumber yang dapat dilihat pola
ATAU
Solusi satu baris dari @AdamvandenHoven:
sumber
(target == null)
denganTextUtils.isEmpty(target)
:)[email protected]
sebagai email yang validPola selanjutnya digunakan dalam surat K-9:
Anda dapat menggunakan fungsi
sumber
android.util.Patterns.EMAIL_ADDRESS
?[a-zA-Z0-9+._%-]
dan yang lain untuk[a-zA-Z0-9-]
i
dari@gmail.com
itu akan kembali benar. Sama di `@yaho.com.Sejak API 8 (android 2.2) ada pola: android.util.Patterns.EMAIL_ADDRESS http://developer.android.com/reference/android/util/Patterns.html
Jadi Anda bisa menggunakannya untuk memvalidasi yourEmailString Anda:
mengembalikan true jika email tersebut valid
UPD: Kode sumber pola ini adalah:
lihat: http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.2_r1.1/android/util/Patterns.java
Jadi, Anda dapat membuatnya sendiri untuk kompatibilitas dengan API <8.
sumber
Kami memiliki pencocokan pola Email sederhana sekarang
sumber
Gunakan kode satu baris sederhana untuk Validasi email
gunakan seperti ...
sumber
Ini adalah saran Android Studio:
sumber
email == null
adalah redandunt karena TextUtils memeriksanya di dalamAnda dapat menggunakan ekspresi reguler untuk melakukannya. Sesuatu seperti yang berikut ini.
Catatan: Periksa ekspresi reguler yang diberikan di atas, jangan gunakan apa adanya.
sumber
"Example Guy" <[email protected]>
. Meskipun secara teknis Anda dapat memvalidasi email dengan regex , agak tidak masuk akal untuk melakukannya.gunakan android: inputType = "textEmailAddress" seperti di bawah ini:
dan:
sumber
Anda dapat menulis ekstensi Kotlin seperti ini:
Dan menyebutnya seperti ini:
sumber
Ada
Patterns
kelas dalam paketandroid.util
yang bermanfaat di sini. Di bawah ini adalah metode yang selalu saya gunakan untuk memvalidasi email dan banyak hal lainnyasumber
Panggil Metode Ini di mana Anda ingin memvalidasi ID email.
sumber
Untuk Android validasi Email, berikan beberapa Pola InBuilt . Tapi itu hanya mendukung API level 8 ke atas .
Berikut adalah kode untuk menggunakan pola itu untuk memeriksa validasi email.
Pastikan bahwa setelah menjalankan metode ini Anda harus memeriksa bahwa jika metode ini mengembalikan true maka Anda mengizinkan untuk menyimpan email dan jika metode ini kembali salah maka tampilkan pesan bahwa email itu "Tidak Valid".
Semoga Anda mendapatkan jawaban Anda, Terima kasih.
sumber
Dapatkah saya SANGAT merekomendasikan Anda tidak mencoba 'memvalidasi' alamat email, Anda hanya akan mendapatkan banyak pekerjaan tanpa alasan yang baik.
Pastikan saja apa yang dimasukkan tidak akan merusak kode Anda sendiri - mis. Tidak ada spasi atau karakter ilegal yang dapat menyebabkan Pengecualian.
Hal lain hanya akan menyebabkan Anda banyak pekerjaan untuk pengembalian minimal ...
sumber
Validasikan format alamat email Anda. [email protected]
sumber
sumber
Jika Anda menggunakan API 8 atau lebih, Anda dapat menggunakan
Patterns
kelas yang tersedia untuk memvalidasi email. Kode sampel:Secara kebetulan jika Anda bahkan mendukung level API kurang dari 8, maka Anda cukup menyalin
Patterns.java
file ke proyek Anda dan merujuknya. Anda bisa mendapatkan kode sumberPatterns.java
dari tautan inisumber
Disini adalah
android.util.Patterns.EMAIL_ADDRESS
String
akan cocok jikaContoh beberapa email pertandingan khusus
Anda dapat mengubah pola ini untuk kasus Anda kemudian divalidasi oleh
sumber
Coba metode sederhana ini yang tidak dapat menerima alamat email yang dimulai dengan angka:
sumber
Coba kode ini .. Ini benar-benar berfungsi ..
sumber
Mengikuti digunakan oleh saya. Namun itu berisi karakter tambahan dari email normal tetapi ini merupakan persyaratan bagi saya.
Jawaban dari pertanyaan ini: - Persyaratan untuk memvalidasi alamat email dengan poin yang diberikan
Penjelasan-
sumber
Kuncinya di sini adalah Anda ingin memvalidasi alamat email sepenuhnya. Anda tidak hanya ingin memeriksa kebenaran sintaksisnya, Anda ingin memeriksa apakah alamat emailnya asli.
Dua alasan yang jelas: pengguna nyata sering salah mengetik alamat email mereka, dan beberapa pengguna mungkin memasukkan alamat email palsu. Oleh karena itu, Anda ingin melakukan pemeriksaan sintaksis dan pemeriksaan keberadaan.
Cara terbaik untuk melakukan ini yang saya temukan di Android adalah dengan menggunakan API Validasi Cloudmersive gratis untuk ini.
Kode ini terlihat seperti ini:
Saya menggunakan ini di semua aplikasi saya dan itu bagus karena saya dapat memvalidasi alamat email di UX pada titik masuk.
sumber
Solusi Kotlin sederhana menggunakan fungsi ekstensi:
dan kemudian Anda dapat memvalidasi seperti ini:
sumber
Perhatikan bahwa sebagian besar ekspresi reguler tidak valid untuk nama domain internasional (IDN) dan domain tingkat atas baru seperti .mobi atau .info (jika Anda memeriksa kode negara atau .org, .com, .gov, dan sebagainya).
Pemeriksaan yang valid harus memisahkan bagian lokal (sebelum tanda-di) dan bagian domain. Anda juga harus mempertimbangkan panjang maksimal bagian dan domain lokal (dalam jumlah 255 karakter termasuk pada tanda).
Pendekatan terbaik adalah mengubah alamat dalam format IDN yang kompatibel (jika diperlukan), memvalidasi bagian lokal (RFC), memeriksa panjang alamat dan memeriksa ketersediaan domain (pencarian DNS MX) atau cukup mengirim email .
sumber
Kelas Linkify memiliki beberapa metode pembantu yang sangat berguna yang mungkin relevan, termasuk ekspresi reguler yang dirancang untuk mengambil nomor telepon dan alamat email dan semacamnya:
http://developer.android.com/reference/android/text/util/Linkify.html
sumber
Saya telah menggunakan kode follwing. Ini berfungsi. Saya harap ini akan membantu Anda.
dan gunakan metode follwing. Ini mengembalikan true jika email valid.
sumber
email adalah email-is Anda.
sumber
Untuk pecinta regex, pola email terbaik (misalnya konsisten dengan RFC 822) yang pernah saya temukan sejak sekarang adalah yang berikut (sebelum filter yang disediakan PHP). Saya kira mudah untuk menerjemahkan ini ke dalam Java - bagi mereka yang bermain dengan API <8:
sumber
Anda dapat melakukan semua jenis validasi di android dengan sangat mudah menggunakan file oval.jar. OVal adalah kerangka kerja validasi tujuan umum pragmatis dan dapat diperluas untuk segala jenis objek Java.
ikuti tautan ini: http://oval.sourceforge.net/userguide.html
Anda dapat menurunkan ini dari sini: http://oval.sourceforge.net/userguide.html#download
Anda dapat menggunakan validasi dengan menetapkan tag dalam variabel
sumber
Anda juga bisa menggunakannya
Jika email tidak valid maka akan membuang AddressException .
Sayangnya Android tidak mendukung jndi-dns , tetapi hanya untuk memberi Anda gambaran validasi email yang lebih kuat, Anda dapat menggunakannya untuk memvalidasi domain email. Mungkin seorang guru Android dapat membantu dan menunjukkan jika ada alternatif yang serupa ... Contoh implementasi dengan java "reguler" tersedia di sini .
EDIT
Saya baru menyadari bahwa javax.mail juga tidak mendukung ... Tapi pos ini menunjukkan solusi .
sumber