2009-08-05 5 views
1

J'ai besoin d'une regexp rapide pour valider qu'une chaîne est un nom de domaine .au valide. Par exemple:Regexp pour la validation des noms de domaine .au

xxx.com.au 
xxx.net.au 
xxx.org.au 
xxx.biz.au 
xxx.--.au 

tous ces éléments doivent être considérés comme valides.

Cela devrait être assez simple pour quelqu'un qui n'est pas aussi désespéré avec les expressions rationnelles que moi. Des idées?

Répondre

3

Si vous souhaitez autoriser que certains TLDs secondaires dans l'espace .au:

/^[a-zA-Z0-9-]+\.(?:com|net|org|biz)\.au$/ 

Modifier la liste des secondaries séparés par | 's que vous désirez.

Si cela ne vous dérange pas de valider strictement le TLD secondaire:

^[a-zA-Z0-9-]+\.\a+\.au$ 

Et si vous voulez permettre à plus de sous-domaines (c.-à-xxxx.yyyy.com.au):

^(?:[a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.\a+\.au$ 

Vous devrez peut-être utiliser a-zA-Z au lieu de \a si le moteur regex que vous utilisez ne supporte pas ce dernier.

+0

Cela échoue sur le dernier de ses exemples. –

+0

Comme indiqué dans la réponse, la liste des secondaires doit être modifiée pour refléter les valeurs souhaitées. – Amber

+0

Salut, pouvez-vous mettre à jour s'il vous plaît pour ne pas autoriser les sous-domaines? Je veux seulement autoriser les noms de domaine primaires puisque c'est pour un site d'enregistrement de domaine –

0
^[\w\d-\.]+\.au$ 

Cela devrait fonctionner correctement. Vous ne pouvez pas vraiment faire grand chose d'autre puisque ce qui vient avant le .au pourrait ajouter d'autres domaines de deuxième niveau au-dessus de the ones that already exist.

+0

Pourquoi \ s? Dernière fois que j'ai vérifié les domaines n'ont pas d'espace dans eux. – Amber

+0

De même, \ w autorise les traits de soulignement, qui ne sont pas valides dans les domaines. \ d serait redondant si vous utilisiez \ w puisque \ w inclut des chiffres. – Amber

+0

\ s était une faute de frappe de ma part qui était seulement sur la page pendant environ 15 secondes. Surpris quelqu'un l'a attrapé. –

0
/^(?:[a-z0-9\-]+\.){2,}au$/i 

Pour une utilisation avec preg_match() ou d'autres fonctions PCRE:

if(preg_match('/^(?:[a-z0-9\-]+\.){2,}au$/i', $domain)) 
    echo "'$domain' is a valid domain\n"; 
else 
    echo "'$domain' is invalid\n"; 
+0

Que fait la partie {2,}? Je ne veux aucune limite sur le nombre de caractères du tld –

+0

'{2,}' signifie que (?: [A-z0-9 \ -] + \.) Doit apparaître * au moins deux fois * avant le 'au' à la fin. –

Questions connexes