2017-04-26 64 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