Vor einiger Zeit habe ich eine Password Strength Checker mit JavaScript und regulären Ausdrücken. In diesem Sinne können Sie auch die Struktur einer E-Mail-Adresse mithilfe derselben Regex-Methode (regulärer Ausdruck) überprüfen.
Wenn Ihr Formularelement die hat id = "E-Mail-Adresse" und Sie fügen ein Formular hinzu onSubmit = ”return checkEmail ();„Dies ist eine Javascript-Funktion, mit der Sie eine Warnung zurückgeben können, wenn die E-Mail-Adresse eine gültige Struktur hat oder nicht:
function checkEmail() { var email = document.getElementById('emailaddress'); var filter = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; if (!filter.test(email.value)) { alert('Please provide a valid email address'); email.focus; return false; } }
Die Funktion überprüft den Inhalt der E-Mail auf den des Filters. Wenn der Vergleich fehlschlägt, wird eine Warnung angezeigt und der Fokus wird wieder auf das E-Mail-Adressfeld zurückgesetzt!
Für Formulare mit mehreren E-Mail-Adressen empfiehlt es sich, class = "emailaddress" zu verwenden. Wenn Sie die Bibliothek prototype.js haben (http://www.prototypejs.org) auf der Seite enthalten können Sie so etwas tun:
var gültig = wahr;
var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
$$ ('. emailaddress'). each (Funktion (E-Mail) {
if (! filter.test (email.value)) {
alert (? Bitte geben Sie eine gültige E-Mail-Adresse an?);
email.fokus;
gültig = falsch;
}
});
Rückgabe gültig;
Danke Ade! Ich muss mehr über Klassen und JavaScript lernen!
Dougs ursprüngliches Beispiel war cool, aber dieses ist eiskalt! Ich wusste nicht, dass Sie Elemente mit einer Klasse auf diese Weise verarbeiten können, und die funktionale Syntax ist süß.
Ade und sein Team sind unglaublich!
Schön, ich kann mich immer auf dich verlassen, wenn es um böse coole Skripte geht! 🙂
Danke Tony!
Ich mag die Idee, aber ich würde zögern, diesen speziellen regulären Ausdruck zu übernehmen, ohne zu beschreiben, welche legalen E-Mail-Adressen er nicht akzeptiert und welche illegalen Adressen er zulässt.
Ein Beispiel für einen regulären Ausdruck, der gute Arbeit leistet, sowie eine Erklärung, welche Fälle nicht behandelt werden, finden Sie hier:
http://www.regular-expressions.info/email.html
Meine persönliche Präferenz ist es, die meisten einfachen Fälle abzudecken und eine Warnung für alles andere auszugeben, anstatt sie abzulehnen. Wenn Bob wirklich sto einreichen will bob@com.museum statt bob@museum.com, warum nicht ihn lassen?
Hallo Reg,
Sie können den Regex mit einem testen Online-Regex-Tester.
Außerdem kann definitiv noch viel mehr getan werden, wenn Sie eine sicherstellen möchten E-Mail-Addresse ist gemäß RFC gültig.
Es gibt einige Gründe, warum jemand keine ungültige E-Mail-Adresse eingeben darf:
1. Sie werden sich über Sie ärgern, wenn die erwartete E-Mail nicht eingeht - unabhängig davon, ob es Ihre Schuld war oder nicht, dass die Adresse falsch eingegeben wurde.
2. Wenn com.museum eine gültige Domain war und Yahoo! betrieb es - jede zurückgesendete E-Mail-Adresse würde sich negativ auf den Ruf Ihres Unternehmens für die E-Mail-Zustellung auswirken. Dies kann dazu führen, dass alle E-Mails Ihres Unternehmens blockiert werden.
3. Wenn Ihr E-Mail-Dienstanbieter Ihnen die Eingabe gestattet hat bob@com.museumSie würden auch für jede E-Mail bezahlen, die an diese E-Mail-Adresse gesendet wird, bis sie diese Adresse aufgrund von Bounces abbestellt hat. Ich würde mich von jedem ESP fernhalten, das eine solche ungültige E-Mail-Adresse zulässt - sie nehmen nur Ihr Geld!
Danke für's vorbeikommen!
Doug
Perfekt, genau das, was ich brauchte!
Es gibt eine viel einfachere Möglichkeit, den Ausdruck zu schreiben:
var regex = /^[a-z0-9\._-]+@([a-z0-9_-]+\.)+[a-z]{2,6}$/i;
- Mit dem letzten Modifikator / i muss der Großbuchstabenbereich nicht angegeben werden.
- Ich kenne keine TLDs mit Zahlen drin.
Nebenbei bemerkt, ich erlaube TLD mit bis zu 6 Zeichen; Neue kommen regelmäßig und man weiß es nie (na ja, einige zukünftige haben vielleicht sogar Zahlen, ich weiß).
Hallo,
Ich versuche, dies in einer vorhandenen Form in Echtzeit zu verwenden, aber dies scheint nicht in Echtzeit zu validieren, wie dies bei der Überprüfung Ihrer Passwortstärke der Fall ist.
Oder bin ich nur so ahnungslos und es funktioniert nicht für mich?
Übrigens, ich mag wirklich, was Sie hier vorhaben, Ihre Tutorials sind sehr einfach, ich werde dieses auf jeden Fall mit einem Lesezeichen versehen….
Nur zu Ihrer Information; Ich habe die Lösung von Ade nicht ausprobiert, aber das obige Muster validiert keine E-Mail-Adressen mit Apostrophen darin (z. B. Mike.O'Hare@Whatever.com). Apostrophe gelten gemäß RFC 2821/2822 -> http://www.faqs.org/rfcs/rfc2822.html
HTH,
Sanjay
Es scheint auch nicht das Pluszeichen zu behandeln, das gültig ist.
Siehe: http://www.dominicsayers.com/isemail/
Im Großen und Ganzen ist dies ein Hauptproblem beim Ausschneiden und Einfügen von Code, das eine ausführliche Diskussion an sich verdient.
@ robbyslaughter.com
du bist nutz ..
es funktioniert gut ..! @
Wäre in Ordnung, wenn wir eine Lösung finden könnten, um gefälschte E-Mail-Adressen bei Kommentaren zu WordPress zu vermeiden
Nur eine kleine Korrektur: Der reguläre Ausdruck hat am Ende ein extra () +. Es sollte lauten:
^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+[a-zA-Z0-9]{2,4}$
Mit dem ersten würden TLDs beliebiger Länge akzeptiert (was nicht intrinsecal falsch ist, wie andere betont haben, aber wenn dies die Absicht wäre, könnte der Ausdruck verkürzt werden).
Können Sie bitte den regulären Ausdruck dieses Codes und seine Funktionsweise erläutern? Auch über .test - Ist .test eine Standardanweisung in Javascript, um Dinge zu überprüfen, wie Sie es im obigen Code getan haben?
Dies ist ein Funktionscode für den Ausdruck von E-Mails.
Funktion validateEmail (id)
{
var emailPattern = /^[a-zA-Z0-9._- weibl.
return emailPattern.test (id);
}
Deepak Rai
varanasi
Dies ist ein Funktionscode für den Ausdruck von E-Mails.
Funktion validateEmail (id)
{
var emailPattern = /^[a-zA-Z0-9._- weibl.
return emailPattern.test (id);
}
Deepak Rai
varanasi
Vielen Dank Onkel. Das hat mir sehr geholfen 🙂
Amandas
danke für den code!
Danke, aber es gibt einen Fehler in dieser Regex. Ich bin kein Regex-Experte, aber ich habe versucht, eine E-Mail zu senden:
Test Test
und es hat die Regex bestanden ... Ich habe bemerkt, dass es fehlt, dem "." so sollte es sein:
/^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/
Ich rolle mit
/^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$ /.
und was ist mit .info?
oh shit… vor 3 Jahren? : S.
Nun, dies ist nur eine grobe Überprüfung, aber nicht 100% genau, zum Beispiel wäre dies in Ordnung john_doe. @ gmail.com Dies ist eigentlich keine gültige E-Mail-Adresse (Punkt ist nicht als letztes Zeichen im lokalen Teil der E-Mail zulässig).
Auch würde es akzeptieren john…doe@gmail.com Dies ist auch ungültig, da eine Sequenz nicht mehr als einen Punkt enthalten kann.
Dies sind nur einige Mängel, die ich auf den ersten Blick bemerkt habe.
Meine Absicht ist es nicht, nur darauf hinzuweisen, falls jemand plant, dies als Sicherheitskontrolle zu verwenden - nicht sicher genug.
Informationen zu gültigen E-Mail-Adressen finden Sie hier: http://en.wikipedia.org/wiki/E-mail_address
Deepak,
Eigentlich denke ich, dass Sie ein Escape für den Punkt (".") Anwenden müssen. Ihre Funktion sollte also stattdessen sein:
Funktion validateEmail (id)
{
var emailPattern = /^[a-zA-Z0-9._- weibl.
return emailPattern.test (id);
}
Andernfalls würde der Punkt "jedes Zeichen" bedeuten. Ich glaube, solche Sonderzeichen müssen entkommen.
Grüße,
Federico
Funktion validateEmail (fld) {
var error = ””;
var tfld = trim (fld.value); // Wert des Feldes mit abgeschnittenem Leerzeichen
var emailFilter = /^[^@‹+@[^@.‹+.[^@‹*ww$/;
var illegalChars = / [(),;: \ ”[]] /;
if (fld.value == "Geben Sie Ihre E-Mail-Adresse ein") {
error = "Bitte geben Sie Ihre E-Mail-Adresse ein.n";
} else if (! emailFilter.test (tfld)) {// E-Mail auf unzulässige Zeichen testen
error = "Bitte geben Sie eine gültige E-Mail-Adresse ein.n";
} else if (fld.value.match (illegalChars)) {
error = "Bitte geben Sie eine gültige E-Mail-Adresse ein.n";
}
Rückgabefehler;
}
Funktion validateEmail (fld) {
var error = ””;
var tfld = trim (fld.value); // Wert des Feldes mit abgeschnittenem Leerzeichen
var emailFilter = /^[^@‹+@[^@.‹+.[^@‹*ww$/;
var illegalChars = / [(),;: \ ”[]] /;
if (fld.value == "Geben Sie Ihre E-Mail-Adresse ein") {
error = "Bitte geben Sie Ihre E-Mail-Adresse ein.n";
} else if (! emailFilter.test (tfld)) {// E-Mail auf unzulässige Zeichen testen
error = "Bitte geben Sie eine gültige E-Mail-Adresse ein.n";
} else if (fld.value.match (illegalChars)) {
error = "Bitte geben Sie eine gültige E-Mail-Adresse ein.n";
}
Rückgabefehler;
}
Funktion validateEmail (fld) {
var error = ””;
var tfld = trim (fld.value); // Wert des Feldes mit abgeschnittenem Leerzeichen
var emailFilter = /^[^@‹+@[^@.‹+.[^@‹*ww$/;
var illegalChars = / [(),;: \ ”[]] /;
if (fld.value == "Geben Sie Ihre E-Mail-Adresse ein") {
error = "Bitte geben Sie Ihre E-Mail-Adresse ein.n";
} else if (! emailFilter.test (tfld)) {// E-Mail auf unzulässige Zeichen testen
error = "Bitte geben Sie eine gültige E-Mail-Adresse ein.n";
} else if (fld.value.match (illegalChars)) {
error = "Bitte geben Sie eine gültige E-Mail-Adresse ein.n";
}
Rückgabefehler;
}
Funktion validateEmail (fld) {
var error = ””;
var tfld = trim (fld.value); // Wert des Feldes mit abgeschnittenem Leerzeichen
var emailFilter = /^[^@‹+@[^@.‹+.[^@‹*ww$/;
var illegalChars = / [(),;: \ ”[]] /;
if (fld.value == "Geben Sie Ihre E-Mail-Adresse ein") {
error = "Bitte geben Sie Ihre E-Mail-Adresse ein.n";
} else if (! emailFilter.test (tfld)) {// E-Mail auf unzulässige Zeichen testen
error = "Bitte geben Sie eine gültige E-Mail-Adresse ein.n";
} else if (fld.value.match (illegalChars)) {
error = "Bitte geben Sie eine gültige E-Mail-Adresse ein.n";
}
Rückgabefehler;
}
Funktionsausstattung (en)
{
return s.replace (/ ^ s + | s + $ /, ”);
}
Funktionsausstattung (en)
{
return s.replace (/ ^ s + | s + $ /, ”);
}
Der '.focus' ist eine Funktion, die es sein sollte:
email.focus ()
Der '.focus' ist eine Funktion, die es sein sollte:
email.focus ()
ehrfürchtige
Funktioniert wie gem .. Große Verwendung von reg Ausdrücken in Javascript…
Es ist ein Riss im Edelstein…
Die Adresse "mmm @ mmm..com" wird akzeptiert. Zwei Punkte zusammen sind jedoch nicht gültig.
Fellas, benutze. Es ist keine JS-Validierung erforderlich.
Funktioniert aber nur mit modernen Browsern. Leider hat die Welt noch nicht aufgeholt. - -
Gesendet von Mailbox für iPhone