Domain als regulärer Ausdruck



  • Hi!
    Eine Domain ist folgendermaßen ausgebaut:

    <domain>      ::= <subdomain> | " "
    <subdomain>   ::= <label> | <subdomain> "." <label>
    <label>       ::= <letter> [ [ <ldh-str> ] <let-dig> ]
    <ldh-str>     ::= <let-dig-hyp> | <let-dig-hyp> <ldh-str>
    <let-dig-hyp> ::= <let-dig> | "-"
    <let-dig>     ::= <letter> | <digit>
    <letter>      ::= any one of the 52 alphabetic characters A through Z in
                      upper case and a through z in lower case
    <digit>       ::= any one of the ten digits 0 through 9
    

    Und das gilt es als regulären Ausdruck umzusetzen. Ich habe eigentlich wenig Ahnung davon, aber hier mein Ansatz:

    <digit>       ::= [0-9]
    <letter>      ::= [a-zA-Z]
    <let-dig>     ::= [0-9] | [a-zA-Z]
    <let-dig-hyp> ::= ([0-9] | [a-zA-Z]) | "_"
    <ldh-str>     ::= (([0-9] | [a-zA-Z]) | "_"){1,}
    

    Aber weiter komme ich dann auch nicht, bzw. weiß ich auch nicht, ob das bis jetzt richtig ist.

    mfg olli



  • Wie genau muss es denn sein?

    ([a-z0-9][a-z0-9-]*\.)*[a-z0-9][a-z0-9-]*\.[a-z]+
    ^^^^^^^^^^^^^^^^^^^^^^^                    ^^^^^^
    subdomains             ^^^^^^^^^^^^^^^^^^  tld
                           domain
    

    Und vergiss nicht, dass es inzwischen auch IDN-Domains gibt.



  • Vielen Dank auch für den Hinweis!
    IDNA-Domains validiert der reguläre Ausdruck jedoch. Ich habe mal das Beispiel von Wiki getestet, und er gibt grünes Licht bei "www.äaa.de".
    mfg olli



  • Ich meinte auch eigentlich nicht die Punycode-Schreibweise, sondern z.b. "www.müller.de" 😉


Anmelden zum Antworten