使用域检查进行AngularJS电子邮件验证

时间:2017-04-26 19:42:42

标签: angularjs

我想在AngularJS上验证电子邮件输入,我还要为例如添加域检查当输入是sample@gbail.com时,显示用户打算输入Gmail的建议......等等。 这是我用的:

<input type="text" class="form-control" name="email" ng-model="txtmail" ng-pattern="/^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$/" required  placeholder="sample@domain.com">

谢谢!

1 个答案:

答案 0 :(得分:0)

最大的帮助是Google关于此的文档:

https://docs.angularjs.org/guide/forms#custom-validation

虽然我想不出任何(包装方面的)当前在那里会显示电子邮件域拼写错误的建议,如果你有一个单独的域列表,你想要检查,它是可能的(通过或语句)。

尝试使用 ng-pattern执行此类操作:

^[a-z0-9!#$%&'*+/=?^_`{|}~.-]+@(yahoo\.com|gmail\.com|msn\.com|hotmail\.com|live\.com)

^[A-Z0-9._%+-]+@(yahoo\.com|gmail\.com|msn\.com|hotmail\.com|live\.com)

对于每个新的域名电子邮件提供商,只需使用|

添加

请记住,您也可以在or中使用ng-pattern功能。)。

另外,例如,如果您想阻止电子邮件,只需添加否定前瞻(?!...),如下所示:

^[A-Z0-9._%+-]+@(?!yahoo\.com|gmail\.com|msn\.com|hotmail\.com|live\.com)

这会导致任何试图使用上面列出的任何电子邮件的人失败。