Ich arbeite gerade an einem "richtigen" URI-Validator, und derzeit läuft alles auf die Validierung des Host-Namens hinaus; der Rest ist nicht so schwierig.
Ich stecke auf IDN-Hostnamen-Labels (d. h., die Unicode enthalten; mögliche Punycode-codierte Strings wurden zu diesem Zeitpunkt decodiert).
Meine erste Idee war im Grunde eine Regex für TLDs, die keine IDNs unterstützen, und eine für diejenigen, die dies tun. Dies könnte möglicherweise auf Mozillas Liste von IDN-fähigen TLDs basieren. Beziehungsweise,
^[a-zA-Z0-9\-]+$
und ^[a-zA-Z0-9\-\p{L}]+$
. Dies ist jedoch keine ideale Situation, da jeder IDN-Registrator entscheiden kann, welche Zeichen er zulassen soll.
Was ich suche, ist eine korrekte, konsistente, aktuelle Datentabelle der Unicode-Zeichen, die in verschiedenen TLDs erlaubt sind. Es sieht so aus, als müsste ich alle Daten selbst auf russischen und chinesischen Registrierungsseiten finden (was ziemlich schwierig ist).
Bevor ich also versuche, all diese Daten selbst zu sammeln, habe ich mich gefragt, ob eine solche Liste bereits existiert. Oder gibt es bessere Ansätze, beste / gängige Praktiken usw.? (Ich möchte, dass die Validierung so streng wie möglich ist.)
Können Sie nicht alle Unicode-Domains in punycode konvertieren und validieren? Da DNS keine echten UTF-8-Zeichen unterstützt, könnte dies die beste Lösung sein.