Regulärer Ausdruck für Email
Agnieszka
- javascript
0 HAL0 Jens Holzkämper0 Encoder
Hallo,
ich habe ein Formular in das eine Email-Adresse eingetragen werden muss und möchte überprüfen ob die eingegebene Adresse auch gültig ist, z.B. ob sie ein @ enthält usw.
Das möchte ich mit einem regulären Ausdruck machen. Leider bin ich nicht so ganz fit im erstellen dieser Ausdrücke und weis nicht genau wie die eigentliche Überprüfung funktioniert.
In der formular.html habe ich mit folgendem Code ein eingabe-Feld erstellt:
<p>
<label for="email">Deine E-Mail Adresse</label>
<input type="text" id="email" name="email" />
</p>
In der funktion.js habe ich folgende Funktion zur überprüfung der Eingabe geschrieben:
//Überprüfen ob überhaupt eine Eingabe gemacht wurde
if(document.getElementById("email").value == "")
error_message+="Bitte gib deine E-Mail Adresse ein. <br />";
//Überprüfen ob die Adresse gültig ist
var email=document.getElementById("email").value;
var rexp=/[1]+(.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+.)+[a-zA-Z]{2,}$/;
if(email.match(rexp)== NULL)
error_message+="E-Mail Adresse ungültig. < /br>";
Hier ist nun mein Problem:
In der funktion.js habe ich noch eine ganze Reihe anderer Abfragen zur Überprüfung der restlichen Daten.
Der erste Teil meiner E-Mailüberprüfung funktioniert (habe das durch auskommentieren des 2. Teils getestet), sobald ich aber den Teil mit dem regulären Ausdruck testen will, passiert gar nichts mehr. Das heißt auch die anderen Überprüfungen werden nicht vorgenommen.
Ich habe mit Hilfe der variable error_massage eine Fehlermeldung erstellt die als Box unterhalb des Formulars eingeblendet wird und alle gesammelten Fehler anzeigt. Diese Box wird nicht mehr angezeigt sobald, der Teil mit dem regulären Ausdruck nicht auskommentiert ist.
Dauraus folgere ich nun, dass an meinem regulären Ausdruck, bzw der Abfrage was nciht stimmt. Ich weis nur nicht was. Kann mir jemand helfen?
_a-zA-Z0-9- ↩︎
Trägt nicht viel zum Verständnis bei aber ich mache diese Abfrage immer mit diesem Stückchen:
var email=document.getElementById("email").value;
var char=/^([^\s@,:"<>]+)@([^\s@,:"<>]+\.[^\s@,:"<>.\d]{2,}|(\d{1,3}\.){3}\d{1,3})$/;
var part=email.match(char);
if(!part){
//Hier kann zb. ein alert() kommen wenn die Mail nicht gültig ist
}
else {
//Prüfung erfolgreich, weiter im Programm
}
Trägt nicht viel zum Verständnis bei aber ich mache diese Abfrage immer mit diesem Stückchen:
var email=document.getElementById("email").value;
var char=/^([^\s@,:"<>]+)@([^\s@,:"<>]+.[^\s@,:"<>.\d]{2,}|(\d{1,3}.){3}\d{1,3})$/;
var part=email.match(char);if(!part){
//Hier kann zb. ein alert() kommen wenn die Mail nicht gültig ist
}
else {
//Prüfung erfolgreich, weiter im Programm
}
Habe deine Version mal ausprobiert und jetzt funktioniert es! Danke!
Ich weis zwar immer noch nicht wo mein Fehler lag, aber wenigstens funktioniert die Abfrage jetzt :D
Trägt nicht viel zum Verständnis bei aber ich mache diese Abfrage immer mit diesem Stückchen:
Das Stückchen erschneint mir etwas kurz zu sein um sinnvoll zu prüfen.
Tach,
ich habe ein Formular in das eine Email-Adresse eingetragen werden muss und möchte überprüfen ob die eingegebene Adresse auch gültig ist, z.B. ob sie ein @ enthält usw.
das Ganze ist deutlich komplizierter als du jetzt noch denkst, CK hat dazu mal einen Artikel geschrieben, und der ist noch nicht für IDN-Domains angepaßt worden.
mfg
Woodfighter
Hallo,
ich habe ein Formular in das eine Email-Adresse eingetragen werden muss und möchte überprüfen ob die eingegebene Adresse auch gültig ist, z.B. ob sie ein @ enthält usw.
das Ganze ist deutlich komplizierter als du jetzt noch denkst, CK hat dazu mal einen Artikel geschrieben, und der ist noch nicht für IDN-Domains angepaßt worden.
und dass die Notwendigkeit solcher Anpassungen keine gute Idee ist, zeigte die Diskussion, die zum Weblog-Artikel Validierung von eMail-Adressen führte.
Freundliche Grüße
Vinzenz
Grundlegendes kann man schon prüfen, z.B. ob ein @ drin ist. Nicht dass jemand seine Homepage angibt oder so, solls ja geben :-)
Dann sollte in der Domain mindestens ein Punkt drin sein und die ToplevelDomain hat (noch!) 2 oder 3 Zeichen. Aber viel Aufwand würde ich da gar nicht reinstecken. Denn darüberhinaus kann man noch so vieles falsch machen, das du nicht prüfen kannst.
o Du kannst nicht prüfen ob es eine Adresse wirklich gibt, auch wenn es sie geben *könnte*. Buchstabendreher oder vergessenen Punkt oder Punkt statt - usw. kannst du nicht erkennen. Wenn jemand seine Adresse nicht kennt, bist du machtlos.
o Wer eine "falsche" im Sinne von nicht existierende Adresse angeben will, kann das nach wie vor.
o Wenn dein reg. Ausdruck was vergessen hat, wird eine gültige Mailadresse nicht anerkannt.