输入类型=“电子邮件”的约束验证API?

Sve*_*ven 2 html forms validation constraints

使用 HTML5 约束验证 API 来验证表单字段type="email",我注意到 Chrome 接受“aa@a”作为正确的电子邮件地址。
这样做的目的是什么 - 这是一个错误吗?定义自定义模式是不好的做法吗?

rob*_*rtc 5

这样做的目的是什么

不排除有效的电子邮件地址。

这是一个错误吗

不。 这是HTML5 兼容浏览器应使用的有效电子邮件地址的定义。该定义存在一个公开缺陷,但即使该缺陷已修复,aa@a电子邮件地址仍然是有效格式的。请记住,电子邮件首次出现于 60 年代中期直到 80 年代中期我们才获得 DNS,许多“@ 右侧”的东西现在对我们来说看起来有点奇怪,但在这些较旧的环境中却完全有效。

定义自定义模式是不好的做法吗?

当然,如果您的要求比“所有格式有效的电子邮件地址”更严格,您也可以这样做,但电子邮件验证很容易出错,尤其是今年所有新的顶级域名都上线了。如果您确实关心有效的电子邮件地址(而不是有效格式的电子邮件地址),那么唯一的解决方案是将实际的电子邮件发送到该地址并确认其到达(通过某种基于令牌的确认 URL,用户必须单击)。