HTML5错误的电子邮件类型输入验证+必需

Cla*_*ldt 2 html javascript html5

有这个HTML(jsfiddle):

<form>
    <input name="email" type="email" placeholder="Email" required />
    <input type="submit" value="Submit">
</form>
Run Code Online (Sandbox Code Playgroud)

为什么hello@world没有被标记为无效的电子邮件地址?

尝试使用pattern="/^\w+(?:\.\w+)*@\w+(?:\.\w+)+$/"但运气不多.

Har*_*joe 6

从HTML5规范:

有效的电子邮件地址是与以下ABNF的电子邮件生成相匹配的字符串,其字符集为Unicode.此ABNF实现RFC 1123中描述的扩展.[ABNF] [RFC5322] [RFC1034] [RFC1123]

email = 1*(atext /".")"@"label*("."标签)

label = let-dig [[ldh-str] let-dig]; RFC 1034第3节限制为> 63个字符的长度

atext = <在RFC 5322第3.2.3节中定义

let-dig = <如RFC 1034第3.5节中所定义

ldh-str = <在RFC 1034第3.5节中定义

因此,是的,hello@world被认为是有效的,因为*("." label)不强迫.@

  • 因为电子邮件地址的格式为:local @ domain - 而域名不一定有点(请参阅联系人@ localhost等地址示例).有关主机名限制的进一步阅读,请访问:https://en.wikipedia.org/wiki/Hostname#Restrictions_on_valid_host_names (3认同)