Guten Tag alle zusammen.
Ich sollte in meinem python module eine Emailprüfung einbauen.
Ob der String, welcher ich aus der DB lese wirklich ein String ist:
gibt es da in python irgendetwas schlaues ?
irgendwo so : string@string.string (höchstens 3 stellen)
.*@.*\. (und dann nur noch 3 stellen welche a-z sind)
gibt es da irgendwelche speziellen prüfkritieren ? besten dank
Sorry, bin ein bissel im stress, und kann mich leider nicht in das ganze Regex modul einlesen
String prüfen ob es wirklich eine Email ist ?
Das ist ein beliebtes Problem Der relevante Teil von RFC 2822 beschreibt die Grammatik. Wie Du siehst, ist Dein Vorschlag zu einfach.
https://www.xing.com/go/invite/18513630.6a91d4
- Rebecca
- User
- Beiträge: 1662
- Registriert: Freitag 3. Februar 2006, 12:28
- Wohnort: DN, Heimat: HB
- Kontaktdaten:
Du bist nicht der erste, der eine RegEx mit der Aufgabe erstellen will, google mal danach. Das hier finde ich sehr interessant: http://www.regular-expressions.info/email.html
Offizielles Python-Tutorial (Deutsche Version)
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
- Rebecca
- User
- Beiträge: 1662
- Registriert: Freitag 3. Februar 2006, 12:28
- Wohnort: DN, Heimat: HB
- Kontaktdaten:
Bei "regular expression validate email" ist es gleich der erste Treffer. Hat mit Python ueberhaupt nichts zu tun.
Offizielles Python-Tutorial (Deutsche Version)
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Du kannst mit Regular Expressions keine E-Mail Addresse validieren, es sei den du erlaubst nur Addressen ohne Kommentare und selbst dann ist die Regular Expression viel zu kompliziert als dass man es ernsthaft als Lösung in betracht ziehen könnte.
Du könntest Formencode verwenden; dessen email-Validator kann - sofern es denn gewünscht ist - prüfen, ob die email-adresse nicht nur dem gültigen Muster entspricht, sondern auch, ob diese Adresse wirklich existiert.
Hier der Link, der die entsprechende Klasse dokumentiert: http://formencode.org/modules/validator ... tors.Email
Hier der Link, der die entsprechende Klasse dokumentiert: http://formencode.org/modules/validator ... tors.Email
habs nun so gemacht, für die die es interessiert:
Code: Alles auswählen
if re.match('^[a-z,A-Z,0-9,_,\-,\.]{2,}@[a-z,A-Z,0-9,_,-,\.]{2,}\.[a-z,A-Z,0-9,-,_]{2,4}($|\,)', field):
@Hubi: Also ich habe ein Alias "m(ät)rc.rintsch.de", welches von Dir zurückgewiesen würde. Andererseits erlaubst Du Kommata in den einzelnen Teilen. Wäre ,,@,,,.,, wirklich eine valide E-Mail-Adresse? Und wer sagt, dass die Top-Level-Domain zwischen zwei und vier Zeichen lang ist? Was ist, wenn sie übermorgen längere einführen? So etwas wie '.info' gibt es schliesslich auch noch nicht sooo lange.
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Es gibt schon ``.museum``BlackJack hat geschrieben:Was ist, wenn sie übermorgen längere einführen? So etwas wie '.info' gibt es schliesslich auch noch nicht sooo lange.
Die Frage dabei ist natuerlich immer, was man da als valide ansieht und akzeptieren will, du faellst da einfach durchs Raster BJ
@OP Bediene dich doch bei den RegExp auf von Rebecca verlinkten Seite (fuer Python umschreiben nicht vergessen).
Zum Schreiben/Debuggen gibts da uebrigens das nette Programm ``Kodos``.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Dazu die verlinkte Seite:
To include .museum, you could use ^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6}$. However, then there's another trade-off. This regex will match john@mail.office. It's far more likely that John forgot to type in the .com top level domain rather than having just created a new .office top level domain without ICANN's permission.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Das erinnert mich an einen Kollegen der "Bo" heißt und durchaus ab und zu Probleme mit Formularen hat, weil Vornamen bekanntlich ja mindestens drei Zeichen haben.BlackJack hat geschrieben:@Hubi: Also ich habe ein Alias "m(ät)rc.rintsch.de", welches von Dir zurückgewiesen würde.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- Defnull
- User
- Beiträge: 778
- Registriert: Donnerstag 18. Juni 2009, 22:09
- Wohnort: Göttingen
- Kontaktdaten:
Du willst gar nicht prüfen, ob die Adresse RFC 5322 konform ist, glaub mir. Du willst in Wirklichkeit etwas ganz anderes Wissen:
Für Punkt 2 reicht es meistens aus, Steuer- und Whitespace Zeichen zu verbieten oder einfach raus zu filtern und den String je nach Speichermedium sauber zu escapen. Kein großer Aufwand.
Für Punkt 3 wäre ein regulärer Ausdruck schon genau das richtige, aber bei weitem nicht so komplex wie in den verlinkten Beispielen. Tippfehler kann man eh nie ganz verhindern (Buchstabendreher z.B.) also warum sollte man es versuchen? Sowas wie r'.+@.+\..+' reicht denke ich völlig. Wer wirklich auf Nummer sicher geben will, lässt den User die Adresse zwei mal eintippen.
Und noch was generelles: Nette User geben keinen 'illegalen Adressen' ein und verstoßen auch nicht gegen Standards, sondern vertippen sich einfach. Die Fehlermeldung sollte darauf ein gehen. Ein "This doen't look like an e-mail address to me. Are you sure?" klingt viiiiel netter als die so beliebte "Wrong/Illegal/Invalid Address" Fehlermeldungen.
- Kann ich den Benutzer über diese Adresse kontaktieren?
- Ist seine Eingabe schädlich für die damit arbeitenden Scripte?
- Hat sich der Benutzer vertippt? Kann ich ihm helfen, seinen Fehler zu bemerken?
Für Punkt 2 reicht es meistens aus, Steuer- und Whitespace Zeichen zu verbieten oder einfach raus zu filtern und den String je nach Speichermedium sauber zu escapen. Kein großer Aufwand.
Für Punkt 3 wäre ein regulärer Ausdruck schon genau das richtige, aber bei weitem nicht so komplex wie in den verlinkten Beispielen. Tippfehler kann man eh nie ganz verhindern (Buchstabendreher z.B.) also warum sollte man es versuchen? Sowas wie r'.+@.+\..+' reicht denke ich völlig. Wer wirklich auf Nummer sicher geben will, lässt den User die Adresse zwei mal eintippen.
Und noch was generelles: Nette User geben keinen 'illegalen Adressen' ein und verstoßen auch nicht gegen Standards, sondern vertippen sich einfach. Die Fehlermeldung sollte darauf ein gehen. Ein "This doen't look like an e-mail address to me. Are you sure?" klingt viiiiel netter als die so beliebte "Wrong/Illegal/Invalid Address" Fehlermeldungen.
Bottle: Micro Web Framework + Development Blog
- Defnull
- User
- Beiträge: 778
- Registriert: Donnerstag 18. Juni 2009, 22:09
- Wohnort: Göttingen
- Kontaktdaten:
Viel schlimmer sind ausländische Studenten aus irgendwelchen afrikanischen Dörfern, die Sonderzeichen im Vornamen und keine Nachnamen haben und auch nicht wissen, wann sie geboren wurden. Das sprengt jede EingabemaskeLeonidas hat geschrieben:Das erinnert mich an einen Kollegen der "Bo" heißt und durchaus ab und zu Probleme mit Formularen hat, weil Vornamen bekanntlich ja mindestens drei Zeichen haben.BlackJack hat geschrieben:@Hubi: Also ich habe ein Alias "m(ät)rc.rintsch.de", welches von Dir zurückgewiesen würde.
Bottle: Micro Web Framework + Development Blog