tipe input = "email" memungkinkan tes @ uji, mengapa?

10

Saya selalu berada di bawah asumsi bahwa browser email-validation-regex lebih kuat daripada beberapa pola regex di JS / PHP.

Majikan saya baru saja menunjukkan kepada saya bahwa kedua string dianggap benar (akhirnya di FF28):

[email protected] // Expected to be true, is true
test@test     // Expected to be false, is true

Mengapa yang terakhir ini benar? Apakah ini bug, atau sesuatu untuk masa depan? Karena sejauh yang saya tahu, tidak benar untuk tidak menggunakan ekstensi (selain dari mungkin localhosts).

Adakah yang bisa menjelaskan ini?

Martijn
sumber
2
"Terlepas dari mungkin localhosts" - dan bagaimana browser membedakan?
MrWhite
1
Lebih lanjut, saya menganggap itu <input type="email" />hanya berguna untuk situs web seluler, sehingga sebagian besar keyboard akan muncul dengan tampilan yang sesuai (dengan @kunci, dan beberapa .compintasan ...).
RichouHunter
Saya tidak tahu, saya tidak membuat peramban :) Mungkin ini trik yang cerdik, atau mungkin beberapa pengaturan yang dapat Anda tambahkanpattern
Martijn
6
Itu alamat yang benar-benar valid, mengapa ditolak?
Jörg W Mittag
1
karena test@testalamat email yang valid ... itu diperlakukan testsebagai a tld. Sama seperti test@comalamat email yang valid untuk comtld ... tools.ietf.org/html/rfc2822#section-3.4.1
SnakeDoc

Jawaban:

20

Itu valid karena testbisa menjadi domain tingkat atas dan localpart@top-level-domainmerupakan alamat email yang valid.

Lihat misalnya alamat Email, bagian domain

Matteo
sumber
Dan karena ICANN sekarang memiliki proses bagi siapa saja (cukup besar) untuk mengajukan TLD pilihan mereka, tidak benar-benar layak bagi validator email untuk menolak testsebagai TLD hanya karena kebetulan belum terdaftar.
Steve Jessop
1
@SteveJessop Selanjutnya OP tidak menentukan apakah dia berbicara tentang validitas sintaksis (email akan valid bahkan jika tidak terdaftar) atau jika dia berbicara tentang memeriksa apakah email berfungsi (dan dalam hal ini lebih banyak lagi akan diperlukan) .. .
Matteo
Tidak memeriksa apakah itu ada, saya terkejut ekstensi domain tidak diperlukan. Ini akan membuat validasi browser menjadi kurang bermanfaat, karena seseorang hanya perlu mengetikkan asd @ ads dan itu akan berlalu.
Martijn
5
@ Martijn: "Validasi browser" hanyalah pemeriksaan validasi baris pertama (yang dengan mudah dilewati), jadi perlu pemeriksaan seluas mungkin. Validasi "ketat" terakhir masih harus dalam logika sisi server Anda.
MrWhite
3

Anda dapat mengedit file host Anda atau menjalankan server DNS di jaringan lokal untuk membuat mesin dengan nama domain tingkat atas. Alamat email hanya akan dapat diakses jika dirutekan hanya dalam jaringan lokal itu tetapi kemungkinan konfigurasi.

Lie Ryan
sumber
2

Perhatikan juga bahwa browser web tidak diharuskan untuk melakukan pemeriksaan validasi apa pun. Browser lama tidak melakukan hal khusus dengan alamat email. Peramban yang lebih baru mungkin memvalidasi, tetapi jenis 'surel' paling berguna pada perangkat seluler tempat keyboard khusus ditampilkan kepada pengguna.

Ron Lussier
sumber