ReEx für E-Mail-Adressen
Hallo zusammen, ich versuche mir gerade eine Regex für E-Mail-Adressen zusammenzubauen. Herausgekommen ist dabei das hier: [A-Za-z0-9\-_\.+]+[^\.]@[A-Za-z0-9][A-Za-z0-9\-]+\.[A-Za-z]{2,} Allerdings konnte ich auch durch längere Googelei nicht herausfinden: Dürfen auf der linken Seite stehen ein . als erstes oder letztes Zeichen ein _ als erstes oder letztes Zeichen eine Ziffer als erstes Zeichen Auf der rechten Seite: ein anderes Zeichen als [a-z0-9] als erstes oder letztes Zeichen So lese ich zB, daß der . als letztes Zeichen vor dem @ nicht zulässig ist. Aber GMX läßt das zu. Ferner lese ich, daß das erste Zeichen ein Buchstabe sein muß, und keine Zahl sein darf. Damit wären aber alle Compuserve-Adressen (Gott hab sie selig) ungültig gewesen, und außerdem lassen web.de und GMX solche Adressen zu. Kurz: hat jemand eine "offizielle" Regex für E-Mail-Adressen parat? -- Andre Tann -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
On Tuesday 20 January 2009 17:41:26 Andre Tann wrote:
Hallo zusammen,
ich versuche mir gerade eine Regex für E-Mail-Adressen zusammenzubauen. Herausgekommen ist dabei das hier:
[A-Za-z0-9\-_\.+]+[^\.]@[A-Za-z0-9][A-Za-z0-9\-]+\.[A-Za-z]{2,}
Allerdings konnte ich auch durch längere Googelei nicht herausfinden:
Dürfen auf der linken Seite stehen
ein . als erstes oder letztes Zeichen ein _ als erstes oder letztes Zeichen eine Ziffer als erstes Zeichen
Auf der rechten Seite:
ein anderes Zeichen als [a-z0-9] als erstes oder letztes Zeichen
So lese ich zB, daß der . als letztes Zeichen vor dem @ nicht zulässig ist. Aber GMX läßt das zu. Ferner lese ich, daß das erste Zeichen ein Buchstabe sein muß, und keine Zahl sein darf. Damit wären aber alle Compuserve-Adressen (Gott hab sie selig) ungültig gewesen, und außerdem lassen web.de und GMX solche Adressen zu.
Kurz: hat jemand eine "offizielle" Regex für E-Mail-Adressen parat?
So einfach ist das nicht. Um wirklich alle möglichen Mail-Adressen zu matchen benötigst du ne Menge Zeichen. Hier ist was für dich: http://de.wikipedia.org/wiki/E-Mail-Adresse Und hier die der offizielle Standard RFC 2822: (?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?: [\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]| \\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])? \.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9] [0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?: [\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]| \\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
Felix Lemke, Dienstag, 20. Januar 2009 17:59:
Und hier die der offizielle Standard RFC 2822:
Danke, der hat mich letztlich hierhin http://www.regular-expressions.info/email.html gebracht, und das ist sehr fein für meine Zwecke. -- Andre Tann -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
On Tue 20 Jan 2009, Andre Tann wrote:
ich versuche mir gerade eine Regex für E-Mail-Adressen zusammenzubauen. Herausgekommen ist dabei das hier:
[A-Za-z0-9\-_\.+]+[^\.]@[A-Za-z0-9][A-Za-z0-9\-]+\.[A-Za-z]{2,}
Das ist mit Sicherheit falsch. Es würde z.B. user@aa.bb.cc.de nicht zulassen. Falls Du Perl magst, nimm Email::Valid. Falls nicht schau Dir die Regexp in http://cpansearch.perl.org/src/RJBS/Email-Valid-0.180/lib/Email/Valid.pm am Ende an ($RFC822PAT) und werde glücklich. Torsten -- Need professional mod_perl support? Just hire me: torsten.foertsch@gmx.net -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
On Tue, Jan 20, 2009 at 05:41:26PM +0100, Andre Tann wrote:
Kurz: hat jemand eine "offizielle" Regex für E-Mail-Adressen parat?
Die Regeln findest du im RfC 821, suche dort nach "local-part". Kurz gesagt: es ist beinahe alles erlaubt, und abhaengig von empfangenden MTA. Klaube dir die erlaubten Zeichen raus und fuehre sie in einem Atom auf, am Besten mittels perl regex. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (4)
-
Andre Tann
-
Felix Lemke
-
Heinz Diehl
-
Torsten Foertsch