Saya sedang menulis mock-up yang sangat sederhana untuk mendemonstrasikan beberapa validasi formulir HTML5. Namun, saya perhatikan validasi email tidak memeriksa titik di alamat, juga tidak memeriksa karakter yang mengikuti titik tersebut.
Dengan kata lain, "john @ doe" dianggap valid, jika jelas bukan alamat email yang valid; "doe" bukan domain.
Beginilah cara saya mengkodekan bidang email saya:
<input type="email" required />
Apa itu belum cukup?
Periksa biola ini untuk melihat apa yang saya maksud.
Catatan: Saya tahu cara melakukannya melalui pola RegEx. Saya hanya ingin tahu bagaimana seseorang bisa lolos dengan menggunakan jenis email sebagai gantinya.
html
email-validation
WEFX
sumber
sumber
In other words, "john@doe" is considered valid, when it's clearly not a valid email address; doe isn't a domain.
Ya,doe
pasti bisa menjadi domain (pikirkanlocalhost
), dan alamat itu secara teknis valid sesuai spesifikasi.localhost
alamat.Jawaban:
Karena a @ b adalah alamat email yang valid (misalnya localhost adalah domain yang valid). Lihat http://en.wikipedia.org/wiki/Email_address#Examples
Juga, perlu diingat bahwa Anda harus selalu melakukan validasi input di server. Validasi sisi klien seharusnya hanya untuk memberikan umpan balik kepada pengguna dan tidak dapat diandalkan, karena dapat dengan mudah dilewati.
sumber
au@ua
Anda secara teoritis dapat memiliki alamat tanpa "." di.
Karena secara teknis hal-hal seperti:
Apakah semua email yang valid.
Jadi validasi HTML5 standar memungkinkan semua email yang valid, termasuk yang tidak umum.
Untuk beberapa penjelasan yang mudah dibaca (Alih-alih membaca melalui standar): http://en.wikipedia.org/wiki/Email_address#Examples
sumber
uz
, yang langsung menunjuk ke IP per Oktober 2018. Jika Anda melakukannyanslookup uz
, itu menunjuk ke91.212.89.8
, jadi mungkin untuk memiliki email di domain ini juga.Coba tambahkan ini ke masukan
Biola
sumber
^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]+$
The RFC 822 , pasal 6, memberikan spesifikasi alamat di augmented Backus-Naur Form (BNF):
Menggunakan spesifikasi ini
a@b
adalah alamat yang valid.MEMPERBARUI
Untuk menjawab komentar Trejkaz, saya menambahkan definisi berikut. Kami melihat bahwa SPACE diperbolehkan tetapi hanya dalam string yang dikutip.
sumber
Pada halaman MDN ini menunjukkan regex browser yang harus digunakan untuk memvalidasi email:
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/email#Validation
Anda dapat sedikit mengubah ekspresi reguler ini agar memerlukan setidaknya satu titik dalam nama domain: ubah bintang
*
di akhir ekspresi reguler menjadi plus+
. Kemudian gunakan regex itu sebagaipattern
atribut:sumber
Anda dapat menyesuaikan pola bidang email:
sumber
Berikut adalah bagaimana Anda bisa melakukannya dengan html5 menggunakan pola regex. Anda juga dapat menyertakan pesan khusus untuk ditampilkan.
sumber
Pola ini selalu berhasil untuk saya.
Teks harus dalam huruf kecil
pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$"
tapi menurut saya itu mencakup lebih atau kurang sebagian besar email.sumber