我想在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">
谢谢!
答案 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)
这会导致任何试图使用上面列出的任何电子邮件的人失败。