我有一个电子邮件输入字段,我有^[^@]+@[^@.]+.[^@]+$
的正则表达式,但在运行时它不需要.com。
转到https://jsfiddle.net/uscktx9d/并输入www @ www并点击提交。这应该是验证失败但不是。正如您在此处看到的https://regex101.com/r/pB6iF4/1,正则表达式应该要求.com。
为什么我的HTML5不需要这个?
答案 0 :(得分:3)
如果您要对电子邮件使用HTML5输入验证,请使用type email
。这将对电子邮件进行原生HTML5验证,并具有额外的好处(例如在移动设备和虚拟键盘上显示@符号)。
另外,请记住,任何前端验证都应该在后端重新验证。
要回答您的问题,您需要使用反斜杠转义.
。
答案 1 :(得分:1)
在正则表达式中,应将文字点声明为转义\.
符号。如果您想确保将它们视为文字,请参阅应转义的Special characters in regular expressions。
此外,HTML5 pattern
attribute值默认为固定,即整个模式包含在^(?:
和)$
中。
用于此属性的正则表达式语言与JavaScript中使用的正则表达式语言相同,只是模式属性与整个值匹配,而不仅仅是任何子集(有点像它暗示
^(?:
在模式的开始和结尾的)$
。
因此,您只需要使用
<input name="asdf" pattern="[^@]+@[^@.]+\.[^@]+" placeholder="email@example.com" title="email@example.com">