如何限制具有@
属性的本地部分(在pattern
之前的文本)超过64个的电子邮件?
<input type="email" id="email" name="email"
required="required" class="form-control">
例如:1234567890123456789012345678901234567890123456789012345678901234+x@example.com
不应该被接受
答案 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])?)*"