为什么Angulars的表单验证始终报告电子邮件地址(如@ a)有效?
我知道可以提供正则表达式作为解决方法,但我不明白Angular如何或为何认为这是一个有效的电子邮件地址。
编辑:我在表单标记中指定了novalidate,它应绕过任何html5验证
答案 0 :(得分:2)
除了RFC之外,还有其他一些内容可以定义电子邮件地址。在经过长时间的咨询后,2013年8月ICANN banned the use of 'dotless' domains得到了几乎所有人(包括微软,雅虎,美国在线,苹果和谷歌)的支持。因此,虽然电子邮件中的无点域名是有效的RFC822(因为它们被归类为本地别名,它们不是有效的互联网名称),但由于其他原因它们无法使用,因此您确实应该在源头拒绝它们,并且角度是错误的接受他们。
顺便说一下,我在编写电子邮件地址的HTML5定义时考虑到了这一点。
答案 1 :(得分:1)
为什么您认为a@a
不是有效email address?
我理解要检查电子邮件地址的域名部分是否为顶级域名,但该列表为growing。因此,在您的应用程序中构建此类限制似乎是不明智的,除非您将努力保持您的TLD数据是最新的。
答案 2 :(得分:1)
a@a
是根据RFC 5322
答案 3 :(得分:0)
它与angularjs
上的email
验证无关。它由html5
<input type="email" ng-model="email" required> // this is validate by `html5` if you'r not add a custom validation to it.
使用novalidate
的区别。请参阅Plunker
第一个没有使用
novalidate
而第二个没有使用它。
清除输入字段并提交表单。没有novalidate
的表单会显示原始html5
电子邮件验证错误,而带有novalidate
的表单则不会显示html5
验证错误。