HTML5电子邮件类型和模式
在使用新的html5type值(例如email、tel等)和pattern属性之间是否存在任何问题、冲突或其他问题。
我指的不是HTML5浏览器兼容性,而是这些属性的新值与pattern属性一起使用时的直接影响。
为了清楚起见,我将使用type="email"
a.仅限类型属性。

<input type="email">

b.仅模式属性
<input type="text" pattern="[email regex]">

c.一起使用的电子邮件和模式属性
<input type="email" pattern="[email regex]">

我觉得使用新的html5类型值可以获得更多的语义值;但是,regex更可控,因为email@localhost只通过使用的email值有效。
如果他们是复制品,我道歉,我环顾四周,但没有看到这个特别的问题
编辑
我发现当两者结合使用时可能会产生负面影响。不过,我不确定消息来源的可信度。
由于两种验证电子邮件地址的方法各有优缺点,您可以决定使用哪种方法。您不应该尝试同时使用这两个功能,因为这可能会导致支持这两个功能的浏览器发生冲突。使用type=“email”的优点是它在语义上是正确的,使用pattern属性的优点是web上有几个易于使用的polyfill,这确保了对更大范围的受众的支持。
Source
如果两者同时使用,请务必进行彻底测试。如果我发现任何副作用,我会更新这个问题。

最佳答案

必要性
pattern属性在任何完全符合html5规范的浏览器上都是不必要的,该规范说明了如何实现各种type状态。
例如,这就是实现type=emailinput元素的方式:
如果未指定multiple属性…
虽然元素的值既不是空字符串也不是单个有效的电子邮件地址,但该元素的类型不匹配。
如果指定了multiple属性…
如果指定了value属性,则该属性的值必须为valid e-mail address list
-HTML5 Specification's Email State (type=email)
实际上,这意味着如果输入了空字符串或有效的电子邮件地址,元素的value将返回空。这意味着浏览器应尝试验证不存在pattern属性的电子邮件地址。如果存在pattern属性,则将同时考虑浏览器和指定的正则表达式。
有用性
尽管没有必要,但您可能仍然希望使用pattern属性来仅捕获某些类型的输入。例如,admin@mailserver1是一个有效的电子邮件地址(according to Wikipedia),您可能希望显式地只允许具有tld的电子邮件地址。这同样适用于特定地区的电话号码。

09-12 08:20