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

 go800li 发布于 2023-02-10 15:39

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

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

这就是我编写电子邮件字段的方式:


这还不够吗?

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

注意:我知道如何通过RegEx模式来实现这一点.我只是想知道如何使用电子邮件类型取而代之.

5 个回答
  • 尝试将此添加到输入中

    pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,63}$"
    

    小提琴

    2023-02-10 15:40 回答
  • 理论上你可以有一个没有"."的地址.在.

    从技术上来说,例如:

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

    都是有效的电子邮件.

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

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

    2023-02-10 15:40 回答
  • 因为@b是有效的电子邮件地址(例如localhost是有效的域).请参见http://en.wikipedia.org/wiki/Email_address#Examples

    另外,请记住,您应该始终在服务器中进行输入验证.客户端验证应仅用于向用户提供反馈而不是依赖,因为它可以被轻松绕过.

    2023-02-10 15:42 回答
  • 在此MDN页面上,它显示了正则表达式浏览器应使用该电子邮件来验证电子邮件:

    https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/input/email#Validation

    您可以稍稍更改此正则表达式,使其在域名中至少需要一个点:*将正则表达式末尾的星号更改为plus +。然后使用该正则表达式作为pattern属性:

    <input type="email" pattern="^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$"></input>
    

    2023-02-10 15:42 回答
  • 的RFC 822,第6章,给出了一个地址的在扩充巴科斯范式(BNF)规范:

    addr-spec   =  local-part "@" domain
    local-part  =  word *("." word)
    domain      =  sub-domain *("." sub-domain)
    

    使用此规范a@b是有效的地址.

    UPDATE

    为了回答Trejkaz的评论,我添加了以下定义.我们看到SPACE是允许的,但仅限于带引号的字符串.

    word          =  atom / quoted-string
    atom          =  1*<any CHAR except specials, SPACE and CTLs>
    quoted-string = <"> *(qtext/quoted-pair) <">
    SPACE         =  <ASCII SP, space>
    CTL           =  <any ASCII control character and DEL> 
    qtext         =  <any CHAR excepting <">, "\" & CR, and including linear-white-space>
    quoted-pair   =  "\" CHAR  
    

    2023-02-10 15:43 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有