mark: Regex

Beitrag lesen

Vor dem Punkt soll noch ein anderes Zeichen stehen, also + statt *
Wo du schon Whitespace aufführst: \t

Stimmt. Danke dafür, vor allem für + statt *

Ist das in Stein gemeißelt, dass eine TLD nicht länger sein kann?

Da bin ich nicht vollkommen sicher, aber:

Weil's mich interessiert hat hab ich selbst nachgeforscht und bin über Wikipedia E-Mail->Länge fündig geworden.

Dort ist RFC5321 (2008) (SMTP Simple Mail Transfer Protocol) verlinkt in dem es unter Abschnitt 4.5.3.1.1. heißt:

Local-part
  The maximum total length of a user name or other local-part is 64
  octets.

Ein Octet hab ich als ein Byte (=8bit) verstanden. Das wird im RFC5321 in den Absätzen zuvor so beschrieben. Also 64 Zeichen in US-ASCII, für andere Codierungen braucht ein Zeichen u.U. mehr Bit.

Und schließlich bin ich, wie MudGuard indirekt bereits verlinkt hat auf RFC 1034 (1987 !) gestoßen, wo unter Abschnitt 3.1 steht:

Each node has a label, which is zero to 63 octets in length.  Brother
nodes may not have the same label, although the same label can be used
for nodes which are not brothers.  One label is reserved, and that is
the null (i.e., zero length) label used for the root.

Es sind also mehrere Spezifikationen die man berücksichtigen muss. Allerdings bin ich wahrlich kein Experte auf dem Gebiet.

Theoretisch wären meines Wissens auch TLDs möglich, die nur aus einem einzigen Zeichen bestehen.

Ein anderer intressanter Ansatz um maximale und minimale Länge einer TLD zu bestimmen könnte so aussehen, dass man sich die Liste aller verfügbaren TLDs bei der IANA holt und diese dann vermisst.

Zur Zeit ist dies XN--CLCHC0EA0B2G2A9GCD mit 22 Zeichen. Das ist natürlich auch nicht auf meinem Mist gewachsen, sondern das hab ich wiederum von Dan Dascalescu.

Also korrigiert:
@[^ \r\n\t]+\.[^ \r\n\t]{2,22}