RegEx-Problem

02/06/2009 - 15:54 von Markus | Report spam
Hallo zusammen,

im Web habe ich eine Regular-Expression gefunden, die E-Mail-Adressen recht
gut validieren soll
(http://fightingforalostcause.net/mi...-regex.php)

Wenn ich diese RegEx jedoch einbinden, erhalte ich immer einen Serverfehler:

"[-_a-z0-9\'+*$^&%=~!?{}]++(?:\.[-_a-z0-9\'+*$^&%=~!?{}]+)*+@(?:(?![-.])[-a-z0-9.]+(?<![-.])\.[a-z]{2,6}|\d{1,3}(?:\.\d{1,3}){3})(?::\d++)?"
wird analysiert - Geschachtelter Quantifizierer +.

Hier der Code:

System.Text.RegularExpressions.Regex reg new
System.Text.RegularExpressions.Regex(@"[-_a-z0-9\'+*$^&%=~!?{}]++(?:\.[-_a-z0-9\'+*$^&%=~!?{}]+)*+@(?:(?![-.])[-a-z0-9.]+(?<![-.])\.[a-z]{2,6}|\d{1,3}(?:\.\d{1,3}){3})(?::\d++)?$",
System.Text.RegularExpressions.RegexOptions.IgnoreCase);

Da ich nicht so der RegEx-Experte bin: Was làuft schief? Beim Testen der
RegEx im Web scheint sie sauber zu funktionieren.

Danke und viele Grüße

Markus

P. S.: Sorry, die Nachricht ist einmal unvollstàndig rausgegangen :-(
 

Lesen sie die antworten

#1 Gerold Mittelstädt
02/06/2009 - 17:28 | Warnen spam
Hallo,

Markus schrieb:
Hallo zusammen,

im Web habe ich eine Regular-Expression gefunden, die E-Mail-Adressen recht
gut validieren soll
(http://fightingforalostcause.net/mi...-regex.php)



Ai..

Wenn ich diese RegEx jedoch einbinden, erhalte ich immer einen Serverfehler:

"[-_a-z0-9\'+*$^&%=~!?{}]++(?:\.[-_a-z0-9\'+*$^&%=~!?{}]+)*+@(?:(?![-.])[-a-z0-9.]+(?<![-.])\.[a-z]{2,6}|\d{1,3}(?:\.\d{1,3}){3})(?::\d++)?"
wird analysiert - Geschachtelter Quantifizierer +.



Das interpretiert eben jeder etwas anders..

Da ich nicht so der RegEx-Experte bin: Was làuft schief? Beim Testen der
RegEx im Web scheint sie sauber zu funktionieren.



Da hast Du deine Antwort:
This page uses PHP's ereg() and preg_match() functions, but some of these will
work with JavaScript and other languages



Du musst mit dem Framework testen. Sonst ist der Test wertlos.

Aber allgemein.. Das ganze ist IMHO weder sinnvoll noch sonst irgendwas.
Es ist doch klar definiert, wie eine gültige Mail-Adresse auszusehen
hat, zuletzt in RfC 5322.
Und das was da steht ist eindeutig zu komplex für einen "einfachen"
RegEx-Ausdruck.

Die einzige wirklich sinnvolle Möglichkeit eine Mail-Adresse auf
Gültigkeit gemàß Spezifikation zu prüfen ist also ein Parser.
Das Framework bringt den in Form der System.Net.MailAddress mit. Beim
instanzieren einer Adresse wird die übergebene auf Gültigkeit geprüft
und ggf. eine FormatException geworfen.
Aber auch die MailAddress hàlt sich nicht komplett an die Spezifikation.
Der Teufel steckt hier im Detail. So werden Adressen mit einem
quoted-string als local-part ("ich bin hier"@irgendwo.tld) z.B. generell
abgelehnt. Auch bei zulàssigen Umlauten im local-part versagt die Prüfung.

Dennoch ist diese Weise (mal von einem eigenen wirklich exakt
arbeitenden Parser abgesehen) aber deutlich sinnvoller als irgendwelche
Regex-Krücken.

Viele Grüße!

Ähnliche fragen