为什么 HTML5 表单验证允许没有点的电子邮件?

新手上路,请多包涵

我正在编写一个非常简单的模型来演示一些 HTML5 表单验证。但是,我注意到电子邮件验证不检查地址中的点,也不检查所述点后面的字符。

换句话说,当“john@doe”显然不是有效的电子邮件地址时,它被认为是有效的; “doe”不是域。

这就是我对电子邮件字段进行编码的方式:

 <input type="email" required />

这还不够吗?

检查这个 小提琴 看看我的意思。

注意:我知道如何通过 RegEx 模式来完成此操作。我只是想知道如何有人可以改用电子邮件类型。

原文由 WEFX 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 491
2 个回答

因为 a@b 是一个有效的电子邮件地址(例如 localhost 是一个有效的域)。请参阅 http://en.wikipedia.org/wiki/Email_address#Examples

另外,请记住,您应该始终在服务器中进行输入验证。客户端验证应该只是为了向用户提供反馈而不是依赖,因为它很容易被绕过。

原文由 Ali Alavi 发布,翻译遵循 CC BY-SA 3.0 许可协议

理论上你可以有一个没有“。”的地址。在。

由于技术上的事情,例如:

 user@com
user@localserver
user@[IPv6:2001:db8::1]

都是有效的电子邮件。

所以标准的 HTML5 验证允许所有有效的电子邮件,包括不常见的电子邮件。

对于一些易于阅读的解释(而不是通读标准): http ://en.wikipedia.org/wiki/Email_address#Examples

评论 更新: ICANN 在 2013 年禁止了所谓的“无点”域,但由于这不会影响上面列出的每个案例,因此允许“无点”地址仍然有效。

原文由 DBS 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏