1UnitedPower: HTML5 - input type email

Beitrag lesen

Hakuna matata!

Es gibt keinen regulären Ausdruck, der eine Email-Adresse richtig erkennt, und es kann auch keinen geben, weil die Sprache der Email-Adressen nicht regulär ist.

Klar, das liegt daranb, dass es gar keine Email-Adressen gibt, sondern nur Email-Namen.

Nein, darauf wollte ich definitiv nicht hinaus. Ich habe nicht von menschlicher Sprache, sondern von formalen Sprachen geredet. Das sind mathematische Modelle und man kann mit mathematischen Methoden bestimmte Eigenschaften für diese formalen Sprachen nachweisen. Wenn man für eine Sprache zum Beispiel zeigen kann, dass sie nicht regulär ist, dann kann man daraus folgern, dass es auch keinen regulären Ausdruck für diese Sprache geben kann. Das hat mit missverständlicher menschlicher Sprache nicht das Geringste zu tun, das sind objektive Fakten. Es ist nicht so, dass wir einfach alle zu blöd sind einen regulären Ausdruck für Email-Adressen zu finden, es ist einfach so, dass es beweisbar keinen geben kann.

Wenn ich mir die Grammatik von RFC5322 anschaue, dann würde ich rein intuitiv sagen, dass diese zwei Produktionsregeln dafür verantworlich sind, dass die formale Sprache der Email-Adressen nicht regulär ist:

ccontent        =   ctext / quoted-pair / comment  
comment         =   "(" *([FWS] ccontent) [FWS] ")"

Intuitiv deshalb, weil sich die Produktionsregeln rekursiv quasi unendlich oft anwenden lassen, außerdem sieht dieser Ausschnitt der Dyck-Sprache (die Sprache der korrekt geklammerten Ausdrücke) sehr ähnlich, welche ebenfalls nicht regulär ist. Formal könnte man diese Eigenschaft mit dem Pumping-Lemma beweisen.

--
“All right, then, I'll go to hell.” – Huck Finn