输入类型的电子邮件:限制本地零件的最大长度

时间:2018-08-20 13:12:22

标签: regex html5 email

如何限制具有@属性的本地部分(在pattern之前的文本)超过64个的电子邮件?

 <input type="email" id="email" name="email"
        required="required" class="form-control">

例如:1234567890123456789012345678901234567890123456789012345678901234+x@example.com不应该被接受

1 个答案:

答案 0 :(得分:0)

Basic validation部分,MDN input文档说

  

支持“电子邮件”输入类型的浏览器会自动提供验证,以确保仅将符合Internet电子邮件地址标准格式的文本输入到输入框中。实现该规范的浏览器应使用与以下正则表达式等效的算法:

     

/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@a-zA-Z0-9?(?:.a-zA-Z0-9?)*$/

您可以使用此模式或任何其他满足您要求的模式,并在开始时添加(?![^@]{65})前瞻,这样一来,如果任何输入中包含65个或更多非@的输入,都会失败。在HTML5正则表达式中,您甚至可以在字符串的开始处删除^,并在字符串的末尾删除$,因为它们是自动添加的。

因此,您可以使用

pattern="(?![^@]{65})[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])?)*"