GNT sans publicité, site mobile, fonctionnalitées exclusives...

Erreur dans une expression reguliere pour valider un nom de domaine (sans le suffix e)

Le
Bruno Baguette
Bonjour,

J'ai un soucis d'expression régulière pour vérifier la validité d'un nom
de domaine (sans le suffixe .be .eu et cie).

if(preg_match('^(\[A-Z\d-]{1,63}$|^$)',$DomainName)==0)
{
array_push($Errors,'The domain name is invalid !');
}

Visiblement, l'expression régulière que j'ai faite n'est pas bonne.

Je cherche à vérifier que le nom de domaine soit d'une longueur de 1 à
63 caractères et ne soit constitué que de caractères légaux
(alphabétiques, tirets et chiffres).

Est-ce que vous auriez une idée de l'endroit où se situe mon erreur ?

D'avance un grand merci !

--
Bruno BAGUETTE - bouchon@alussinan.org

S'i'n'a è'ne saquî qui n'doit nin mârtchi, è'n mârtch'rè nîn.

--
Lire les 18 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 4
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Marc
Le #688559

if(preg_match('^([A-Zd-]{1,63}$|^$)',$DomainName)==0)


la chaine doit etre bordée par un délimiteur non utilisé dans
l'expression ou "quoté".

--

CrazyCat
Le #688772
Bruno Baguette wrote:
Bonjour,

J'ai un soucis d'expression régulière pour vérifier la validité d'un nom
de domaine (sans le suffixe .be .eu et cie...).

if(preg_match('^([A-Zd-]{1,63}$|^$)',$DomainName)==0)
{
array_push($Errors,'The domain name is invalid !');
}


les lettres minuscules, les points....
[w.-]{1,63} semble meilleur non?


--
Tchattez en liberté: http://www.c-p-f.net
Tout sur les eggdrops: http://www.c-p-f.org
ML @

--

Cleo
Le #688552
if(preg_match('^([A-Zd-]{1,63}$|^$)',$DomainName)==0)


Avec la clause "|^$" tu acceptes aussi les noms de domaine vide ?
si oui pourquoi ne pas mettre directement (^[wd-]{0,63}$) ?

--
Cléo.

--

P'tit Marcel
Le #688328
Bruno Baguette wrote:

Bonjour,

J'ai un soucis d'expression régulière pour vérifier la validité d'un nom
de domaine (sans le suffixe .be .eu et cie...).

if(preg_match('^([A-Zd-]{1,63}$|^$)',$DomainName)==0)


plutôt :
'|^[-a-z0-9]{1,63}$|i' (en prenant | comme délimiteur)

si tu veux être rigoriste, interdit le caractère - en première et
dernière position. En théorie (rfc1034), le premier caractère ne devrait
pas non plus être un chiffre, mais il y a pas mal d'exceptions...

--

Daedalus
Le #688325
Bonjour,

J'ai un soucis d'expression régulière pour vérifier la validité d'un nom
de domaine (sans le suffixe .be .eu et cie...).

if(preg_match('^([A-Zd-]{1,63}$|^$)',$DomainName)==0)
{
array_push($Errors,'The domain name is invalid !');
}

Visiblement, l'expression régulière que j'ai faite n'est pas bonne.

Je cherche à vérifier que le nom de domaine soit d'une longueur de 1 à
63 caractères et ne soit constitué que de caractères légaux
(alphabétiques, tirets et chiffres).

Est-ce que vous auriez une idée de l'endroit où se situe mon erreur ?




1- délimiteurs manquants: '/REGEXP/' ou encore '#REGEXP#'.
2- Le "[" d'ouverture est précédé d'un anti-slash qui fout ta classe de
caractère en l'air.

Suggestion:
if(!preg_match('/^[a-zd-]{1,63}$|^$/', $domain)){
array_push($Errors,'The domain name is invalid !');
}

Es-tu bien certain de ce "|^$" ?
Ceci veux dire que "" est aussi un nom de domaine valide, et que même
unset($domain) serait valid.
Je crois aussi que le "-" n'est pas valide comme premier et dernier
charactère du nom de domaine.

Dae

Publicité
Suivre les réponses
Poster une réponse
Anonyme