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.
--
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.
--

Poser une question


la chaine doit etre bordée par un délimiteur non utilisé dans
l'expression ou "quoté".
--
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 @
--
Avec la clause "|^$" tu acceptes aussi les noms de domaine vide ?
si oui pourquoi ne pas mettre directement (^[wd-]{0,63}$) ?
--
Cléo.
--
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...
--
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