Dikatakan "Dengan HTML5, kita tidak perlu lagi js atau kode sisi server untuk memeriksa apakah masukan pengguna adalah alamat email atau url yang valid"
Bagaimana saya bisa memvalidasi email setelah pengguna masuk? dan tanpa JS cara menampilkan pesan jika pengguna salah memasukkan alamat emailnya.
<input type="email" pattern="[^ @]*@[^ @]*" placeholder="Enter your email">
<input type="submit" value="Submit">
Jawaban:
Di HTML5 Anda bisa melakukan seperti ini:
Dan ketika pengguna menekan kirim, secara otomatis menampilkan pesan kesalahan seperti:
sumber
required
atribut.com
dalam email. Ini hanya memeriksa tanda @. Ex. Saya bisa masukexample@gmail
dan menyimpan formulir. meskipun itu bukan alamat email yang valid. Apakah ada solusi untuk memeriksa dengan benar[email protected]
?example@gmail
mungkin bukan email yang valid tetapi ini adalah format alamat email yang valid.The
input type=email
halaman dari www.w3.org catatan situs yang alamat email adalah string yang cocok dengan ekspresi reguler berikut:Gunakan
required
atribut danpattern
atribut agar nilai cocok dengan pola regex.sumber
[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*
type="email"
dan memeriksavalid
properti boolean di DOMNode - tidak perlu mengulangi regex yang mendasarinyaMenggunakan
[a-zA-Z0-9.-_]{1,}@[a-zA-Z.-]{2,}[.]{1}[a-zA-Z]{2,}
untuk[email protected]
/[email protected]
sumber
postmaster@ai
adalah alamat email yang valid dan regexp ini juga akan melarangnya. (Sumber: serverfault.com/q/154991/104798 )tampaknya benar jika bidang kosong atau valid. Ini juga memiliki beberapa bendera menarik lainnya:
Diuji di Chrome.
sumber
Berikut adalah contoh yang saya gunakan untuk semua input email formulir saya. Contoh ini adalah ASP.NET, tetapi berlaku untuk semua:
HTML5 masih memvalidasi menggunakan pola jika tidak diperlukan. Belum menemukan satu pun yang merupakan positif palsu.
Ini dirender sebagai HTML berikut:
sumber
Saya tahu Anda tidak menginginkan solusi Javascript namun ada beberapa hal seperti pesan validasi yang disesuaikan yang, dari pengalaman saya, hanya dapat dilakukan menggunakan JS.
Selain itu, dengan menggunakan JS, Anda dapat secara dinamis menambahkan validasi ke semua bidang masukan jenis email di dalam situs Anda daripada harus mengubah setiap bidang masukan.
sumber
Agak terlambat untuk pesta, tetapi ekspresi reguler ini membantu saya memvalidasi input jenis email di sisi klien. Padahal, kita juga harus selalu melakukan verifikasi di sisi server.
Anda dapat menemukan semua jenis regex di sini .
sumber
TL; DR: Satu-satunya metode yang 100% benar adalah dengan memeriksa @ -sign di suatu tempat di alamat email yang dimasukkan dan kemudian memposting pesan validasi ke alamat email yang diberikan. Jika mereka dapat mengikuti instruksi validasi di pesan email , alamat email yang dimasukkan sudah benar.
Jawaban panjang:
David Gilbertson menulis tentang ini tahun lalu:
Dengan kata lain, penting untuk diperhatikan bahwa semua jenis validasi berbasis string hanya dapat memeriksa apakah sintaksnya tidak valid. Itu tidak dapat memeriksa apakah pengguna benar-benar dapat melihat email (misalnya karena pengguna telah kehilangan kredensial, mengetik alamat orang lain atau mengetik email kantor alih-alih alamat email pribadi untuk kasus penggunaan tertentu). Seberapa sering pertanyaan yang Anda cari adalah " apakah email ini valid secara sintaksis " dan bukan " dapatkah saya berkomunikasi dengan pengguna menggunakan alamat email yang diberikan "? Jika Anda memvalidasi string lebih dari "isinya
@
", Anda mencoba menjawab pertanyaan sebelumnya! Secara pribadi, saya selalu tertarik dengan pertanyaan terakhir saja.Selain itu, beberapa alamat email yang mungkin secara sintaksis atau politis tidak valid, dapat berfungsi. Misalnya, secara
postmaster@ai
teknis berfungsi meskipun TLD seharusnya tidak memiliki data MX . Lihat juga diskusi tentang validasi email di milis WHATWG (di mana HTML5 dirancang terlebih dahulu).sumber
Menggunakan HTML 5, Cukup buat input email seperti:
Saat pengguna mengarahkan kursor ke kotak input, mereka akan mendapatkan tooltip yang menginstruksikan mereka untuk memasukkan email yang valid. Namun, formulir Bootstrap memiliki pesan Tooltip yang jauh lebih baik untuk memberi tahu pengguna untuk memasukkan alamat email dan itu muncul saat nilai yang dimasukkan tidak cocok dengan email yang valid.
sumber
Anda juga bisa mengikuti pola ini
Ref: Di W3Schools
sumber
<input type="email" name="email" pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$" title="please enter valid email [[email protected]].">
Anda juga dapat menambahkan judul untuk menunjukkan pesan validitas.Menurut MDN , RegExp ini tidak masalah untuk memvalidasi email, karena email yang memenuhi spesifikasi harus cocok dengannya.
sumber
Sangat sulit untuk memvalidasi Email dengan benar hanya dengan menggunakan "pola" atribut HTML5. Jika Anda tidak menggunakan "pola" seseorang @ akan diproses. yang BUKAN email yang valid.
Menggunakan
pattern="[a-zA-Z]{3,}@[a-zA-Z]{3,}[.]{1}[a-zA-Z]{2,}[.]{1}[a-zA-Z]{2,}"
akan membutuhkan format yang akan[email protected]
tetapi jika pengirim memiliki format seperti[email protected]
(atau serupa) tidak akan divalidasi untuk memperbaikinya, Anda bisa meletakkanpattern="[a-zA-Z]{3,}@[a-zA-Z]{3,}[.]{1}[a-zA-Z]{2,}[.]{1}[a-zA-Z]{2,}[.]{1}[a-zA-Z]{2,}"
ini akan memvalidasi ".com.au atau .net.au atau serupa.Namun menggunakan ini, tidak akan mengizinkan [email protected] untuk memvalidasi. Sejauh hanya menggunakan HTML5 untuk memvalidasi alamat email masih belum sepenuhnya dimiliki kami. Untuk menyelesaikan ini, Anda akan menggunakan sesuatu seperti ini:
atau:
Namun, saya tidak tahu cara memvalidasi kedua atau semua versi alamat email menggunakan atribut pola HTML5.
sumber
postmaster@ai
adalah alamat email yang valid dan regexp ini juga akan melarangnya. (Sumber: serverfault.com/q/154991/104798 )