expression reguliere : @IP - Programmation
Marsh Posté le 04-04-2002 à 20:57:57
ben, en expression régulière, tu devrais pouvoir faire un truc du style [0..255].[0..255].[0..255].[0..255] si tu fais ça dans Lex et que tu lui envois une IP, il te dira si c'est valable ou pas... mais bon... je suis pas vraiment sûr c'est ça que tu voulais
Marsh Posté le 04-04-2002 à 23:25:13
enzut a écrit a écrit : ben, en expression régulière, tu devrais pouvoir faire un truc du style [0..255].[0..255].[0..255].[0..255] si tu fais ça dans Lex et que tu lui envois une IP, il te dira si c'est valable ou pas... mais bon... je suis pas vraiment sûr c'est ça que tu voulais |
pour moi [0..255] ça correspond à [0125] c'est à dire de 0 à 2 ou un 5 répété une unique fois.
Marsh Posté le 04-04-2002 à 23:27:23
[0..255] ça match "0", "2", "5" et ".". Les expressions régulières c'est fait pour filtrer du texte, pas des données numériques.
Marsh Posté le 04-04-2002 à 23:28:08
Je préfèrerais utiliser un split de la chaîne puis faire un foreach dessus pour vérifier chaque nombre.
Marsh Posté le 04-04-2002 à 23:29:55
matafan a écrit a écrit : [0..255] ça match "0", "2", "5" et ".". Les expressions régulières c'est fait pour filtrer du texte, pas des données numériques. |
Tiens oups j'avais pas tilté que c'était - qu'on utilisait et non ..
Marsh Posté le 05-04-2002 à 09:42:34
bo j'ai un truc qui marche mais bon si il y a plus court:
function valider_ip ($ip) {
if (is_string ($ip) && ereg('^([0-9]{1,3})\.([0-9]{1,3})\.'
'([0-9]{1,3})\.([0-9]{1,3})$'
$ip,$part)) {
if ($part[1] <= 255 && $part[2] <= 255 &&
$part[3] <= 255 && $part[4] <= 255)
return TRUE; #ip valide
}
}
[jfdsdjhfuetppo]--Message édité par fabriceMerc--[/jfdsdjhfuetppo]
Marsh Posté le 05-04-2002 à 09:45:32
houai, pardon, j'ai répondu trop vite. c'est en effet [0-255] pour tout les "trucs" compris entre la borne 0 et la borne 255... Ca marche aussi avec [a-z] si on veut les lettres de l'alphabet...
Marsh Posté le 05-04-2002 à 10:13:00
enzut a écrit a écrit : houai, pardon, j'ai répondu trop vite. c'est en effet [0-255] pour tout les "trucs" compris entre la borne 0 et la borne 255... Ca marche aussi avec [a-z] si on veut les lettres de l'alphabet... |
nonon [0-255] ça correspond à [0125] car il va d'abord prendre l'écart 0-2 puis 5
Marsh Posté le 05-04-2002 à 12:13:33
Bon, OK, je vous fais chier une dernière fois (mais cette fois-ci, ça marche, je l'ai tester...
tu définis:
ip [0-1][0-9][0-9]|[2][0-4][0-9]|[25][0-5]
%%
{ip}"."{ip}"."{ip}"."{ip} {printf("%s\n", yytext);}
. {/* rien sinon echo par défaut dans lex */}
Bon, c'est du code lex, mais le tout y est...
Marsh Posté le 04-04-2002 à 17:58:03
en fait je voudrais savoir si l'adresse IP saisie est correcte
j'ai tenté sans les expressions régulieres mais c'est enorme ( test 0<x<255 ...)
en fait je vois pas comment en utilisant les expressions régulieres vérifir que chaque nombre de l'@IP est bien compris ( strictement ) entre 0 et 255 .
mercie