2017-04-26 2 views
0

Ich möchte E-Mail-Eingabe auf AngularJS validieren, ich möchte Domain-Check auch für z. Wenn die Eingabe ist [email protected], um Vorschlag Benutzer anzuzeigen, der Gmail eingeben soll ... so weiter. hier ist, was ich benutze:AngularJS E-Mail-Validierung mit Domain-Überprüfung

<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]"> 

Vielen Dank!

+0

Bitte lesen Sie [fragen]. Schlüsselbegriffe: "Suchen und forschen" und "Erkläre ... alle Schwierigkeiten, die dich daran gehindert haben, es selbst zu lösen". –

+0

Siehe [AngularJS Entwicklerhandbuch - Benutzerdefinierte Validierung] (https://docs.angularjs.org/guide/forms#custom-validation). – georgeawg

+0

@georgeawg, Vielen Dank, das hat geholfen, jetzt habe ich es geschafft, @ gmail.com anhand der Dokumentation zu validieren: /^[a-z0-9!#$%&'*+/=?^_ '{|}~.- ] + @ gmail \ .com $/i aber ich kann keine anderen Domains wie yahoo.com für zB validieren – phpguy

Antwort

0

Die größte Hilfe ist die Dokumentation von Google dazu:

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

Obwohl ich nicht von irgendetwas (Paket weist), die derzeit da draußen denke, dass Vorschläge für Rechtschreibfehler auf E-Mail-Domänen zeigen werden, wenn Sie haben eine Liste von Domänen, die Sie überprüfen möchten, es ist möglich (durch oder Aussagen).

Probieren Sie etwas wie dies mit Ihremng-pattern zu tun:

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

Oder

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

Für jeden neuen Domain E-Mail-Provider, es nur mit den |

hinzufügen Denken Sie daran, Sie könnenverwendenFunktionalität innerhalb Ihrer ng-pattern auch :).

Auch, wenn Sie zum Beispiel sagen, wollte eine E-Mail blockieren, fügen Sie einfach die negative Vorschau (?!...), etwa so:

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

Dies jemanden verursacht, die oben aufgeführten der E-Mails zu verwenden versucht, Scheitern.

+0

danke für die Referenz, jetzt wurde das Problem wie auch wenn ich @ gnail.com eingeben es akzeptieren es so weit ich kann alle möglichen Domains sind mit/^ [a-z0-9! # $% & '* +/=?^_ '{|} ~ .-] + @ gmail \ .com | com | [a-z0-9 -] + @ yahoo \ .com | com $/i – phpguy

+0

@phpguy Ich habe das geändert Codebeispiel, sollte jetzt gut funktionieren :) – NoReceipt4Panda

+0

@VolcoMeter, Danke :) aber immer noch, das hat die Ergebnisse nicht erreicht, für zB [email protected] wird als gültige E-Mail genommen :( – phpguy