使用HTML5约束验证API验证包含type="email"
的表单字段,我发现Chrome接受“aa @ a”作为正确的电子邮件地址。
这是什么目的 - 这是一个错误吗?定义自定义模式是不好的做法吗?
答案 0 :(得分:4)
这个
的目的是什么?
不排除有效的电子邮件地址。
这是一个错误
没有。符合HTML5的浏览器应使用的Here is the definition of a valid email address。对此定义有open defect,但即使已修复aa@a
,仍然是有效格式的电子邮件地址。请记住,email first came about in the mid-sixties,我们didn't get DNS until the mid-eightes,很多'@'对我们来说有点奇怪的东西现在在这些较老的情境中完全有效。
定义自定义模式是不好的做法吗?
当然,如果您的要求比“所有格式有效的电子邮件地址”更严格,但电子邮件验证很容易出错,尤其是使用all the new top level domains coming online this year时。如果您真的担心有效的电子邮件地址(而不是有效格式化的电子邮件地址),那么唯一的解决方案是将实际的电子邮件发送到该地址并确认它到达(通过某种基于令牌的确认URL,用户必须点击)。