Kiểu đầu vào = Email email cho phép test @ test, tại sao?


10

Tôi luôn đặt giả thiết rằng trình duyệt xác thực email-regex mạnh hơn so với một số mẫu biểu thức chính quy trong JS / PHP.

Chủ nhân của tôi chỉ cho tôi thấy rằng cả hai chuỗi được coi là chính xác (cuối cùng trong FF28):

test@test.com // Expected to be true, is true
test@test     // Expected to be false, is true

Tại sao điều sau là đúng? Đây có phải là một lỗi, hoặc một cái gì đó cho tương lai? Bởi vì theo như tôi có thể nói, không đúng khi không sử dụng một phần mở rộng (ngoài khả năng là localhost).

Bất cứ ai có thể làm sáng tỏ về điều này?


2
"ngoài các localhost có thể" - và trình duyệt khác biệt như thế nào?
MrWhite

1
Hơn nữa, tôi cho rằng điều đó <input type="email" />chỉ hữu ích cho các trang web di động, do đó hầu hết các bàn phím sẽ hiển thị với màn hình phù hợp (có @phím và một số .comphím tắt,).
RichouHunter

Tôi không biết, tôi không xây dựng trình duyệt :) Có thể là một mẹo thông minh hoặc có thể một số cài đặt bạn có thể thêm vàopattern
Martijn

6
Đó là một địa chỉ hoàn toàn hợp lệ, tại sao nó lại bị từ chối?
Jörg W Mittag

1
bởi vì test@testlà một địa chỉ email hợp lệ ... nó được coi testlà một tld. Cũng giống như test@comlà một địa chỉ email hợp lệ cho comtld ... tools.ietf.org/html/rfc2822#section-3.4.1
SnakeDoc

Câu trả lời:


20

Nó hợp lệ vì testcó thể là một tên miền cấp cao nhất và localpart@top-level-domainlà một địa chỉ email hợp lệ.

Xem ví dụ Địa chỉ email, phần tên miền


Và vì ICANN hiện có một quy trình cho bất kỳ ai (đủ lớn) để đăng ký TLD theo lựa chọn của họ, nên việc xác thực email từ chối testlà TLD chỉ là không khả thi nữa vì nó chưa được đăng ký.
Steve Jessop

1
@SteveJessop Hơn nữa, OP không chỉ định nếu anh ta nói về tính hợp lệ cú pháp (email sẽ hợp lệ ngay cả khi không được đăng ký) hoặc nếu anh ta đang nói về việc kiểm tra xem email có hoạt động không (và trong trường hợp này sẽ cần nhiều hơn nữa) .. .
Matteo

Không kiểm tra nếu nó tồn tại, tôi đã ngạc nhiên rằng việc mở rộng tên miền là không bắt buộc. Điều này sẽ làm cho việc xác thực trình duyệt ít hữu ích hơn rất nhiều, vì ai đó chỉ phải nhập asd @ ads và nó sẽ vượt qua.
Martijn

5
@Martijn: "Xác thực trình duyệt" chỉ là kiểm tra xác thực dòng đầu tiên (dễ dàng bỏ qua), vì vậy nó cần phải là kiểm tra rộng nhất có thể. Xác nhận "nghiêm ngặt" cuối cùng vẫn cần phải nằm trong logic phía máy chủ của bạn.
MrWhite

3

Bạn có thể chỉnh sửa tệp máy chủ của mình hoặc chạy máy chủ DNS trên mạng cục bộ để tạo một máy có tên miền cấp cao nhất. Địa chỉ email sẽ chỉ có thể truy cập được nếu nó chỉ được định tuyến trong mạng cục bộ đó nhưng đó là một cấu hình có thể.


2

Cũng lưu ý rằng trình duyệt web không bắt buộc phải thực hiện bất kỳ kiểm tra xác thực nào. Các trình duyệt cũ hơn không làm gì đặc biệt với địa chỉ email. Các trình duyệt mới hơn có thể xác thực, nhưng loại 'email' hữu ích nhất trên các thiết bị di động nơi bàn phím chuyên dụng có thể được hiển thị cho người dùng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.