2017-04-26 66 views
0

我想验证在AngularJS上的电子邮件输入,我想为例如添加域名检查。当输入是[email protected]来显示建议用户打算输入Gmail ...等等。 下面是我用什么:AngularJS电子邮件验证与域名检查

<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="[email protected]"> 

谢谢!

+0

请阅读[问]。重要短语:“搜索和研究”和“解释......阻止你自己解决它的任何困难”。 –

+0

请参阅[AngularJS开发人员指南 - 自定义验证](https://docs.angularjs.org/guide/forms#custom-validation)。 – georgeawg

+0

@georgeawg,谢谢你的帮助,现在我设法根据文档验证@ gmail.com:/^[a-z0-9!#$%&'*+/=?^_'{|}~.- ] + @ gmail \ .com $ /我然而,我无法验证任何其他域名,比如yahoo.com – phpguy

回答

0

最大的帮助是谷歌对这个文档:

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

虽然我不能想到的任何东西(包明智)是目前在那里,会显示在电子邮件域拼写错误的建议,如果你有一个你想检查的域名列表,这是可能的(通过或陈述)。

尝试做这样的事情与你ng-pattern

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

或者

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

对于每个新域名的电子邮件提供商,刚刚与|

添加它请记住,你可以使用or功能也在您的ng-pattern之内:)。

另外,如果你说,例如,要阻止电子邮件,只需添加排除模式(?!...),就像这样:

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

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

+0

感谢您的参考,现在问题变得像,即使当我输入@ gnail.com它接受它,据我所知可能所有可能的域与/^[a-z0-9!#$%&# '* +/=?^ _'{|}〜.-] + @ gmail \ .com | com | [a-z0-9 - ] + @ yahoo \ .com | com $/i – phpguy

+0

@phpguy我改变了代码示例,现在应该工作得很好:) – NoReceipt4Panda

+0

@VolcoMeter,谢谢:)但仍然没有达到结果,例如[email protected]被视为有效的电子邮件:( – phpguy