角度电子邮件验证

时间:2014-12-29 04:28:39

标签: angularjs email-validation

为什么Angulars的表单验证始终报告电子邮件地址(如@ a)有效?

我知道可以提供正则表达式作为解决方法,但我不明白Angular如何或为何认为这是一个有效的电子邮件地址。

编辑:我在表单标记中指定了novalidate,它应绕过任何html5验证

4 个答案:

答案 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验证错误。