Domains mit Unicode/Sonderzeichen sind doof.
Aus Gründen der Sicherheit und Kompatibilität werden Domain-Namen mit nicht-ASCII Zeichen tatsächlich via Punycode notiert, der echte Domain-Name ist dann xn--irgendwas
. Zum Beispiel,
dömäin.example
=
xn--dmin-moa0i.example
Das sieht einfach doof aus wenn der Browser letzteres anzeigt, egal ob dein Link jetzt schöne Sonderzeichen haben könnte.
Das Browser das machen ist extrem wichtig zur Vermeidung von “Homograph”-Angriffen, bei der Phisher eine Domain registrieren die so ähnlich aussieht wie irgendwas bekanntes, aber in Wirklichkeit Sonderzeichen benutzt. Wann Browser Unicode oder Punycode anzeigen unterscheidet sich nach verschiedenen Heuristiken. Der einzige zuverlässige Ansatz für Domains die immer gleich angezeigt werden ist ASCII.
The text does technically give the reason on the first page:
Here, “regular language” is a technical term, and the statement is correct.
The text goes on to discuss Perl regexes, which I think are able to parse at least all languages in
LL(*)
. I’m fairly sure that is sufficient to recognize XML, but am not quite certain about HTML5. The WHATWG standard doesn’t define HTML5 syntax with a grammar, but with a stateful parsing procedure which defies normal placement in the Chomsky hierarchy.This, of course, is the real reason: even if such a regex is technically possible with some regex engines, creating it is extremely exhausting and each time you look into the spec to understand an edge case you suffer 1D6 SAN damage.