Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1008 connectés 

  FORUM HardWare.fr
  Programmation

  [JavaScript] Une belle regex bien compliquée ...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JavaScript] Une belle regex bien compliquée ...

n°198150
SCREAM78
Posté le 20-08-2002 à 17:10:06  profilanswer
 

Bonjour,
 
J'ai un petit pb avec une regex (en JavaScript).
Le but de cette regex est de valider une adresse IP.
Cette adresse peut etre de la forme : ( 0=<x<=255)
x.x.x.x (normal)
x. (c pour faire des ranges)
x.x. (idem)
x.x.x. (idem)
 
Voila la fonction que j'utilise qui ne marche pas pour tous les cas :
 

Code :
  1. function IsValidIp2(ip)
  2. {
  3. str=new RegExp("((^([0-9]{1,3}\.))([0-9]{1,3}\.){0,2}$)|((^([0-9]{1,3}\.))([0-9]{1,3}\.)([0-9]{1,3}\.)([0-9]{1,3})$)" );
  4. if (str.test(ip))
  5. {
  6.   var SplitIpArray=ip.split("." );
  7.   for (i=0;i<SplitIpArray.length;i++) if (SplitIpArray[i]>255) return false;
  8.   return true;
  9. }
  10. else return false;
  11. }


 
J'arrive à la faire planter ca un chiffre tout con genre 200 passe ... ou 2002-12 par exemple ... je comprend pas pq !
Y'a peut etre une histoire de parenthèses mal placées ... en tout cas celui qui trouve respect ... je me suis bien prit la tête dessus :D
Merci d'avance !


Message édité par SCREAM78 le 20-08-2002 à 17:11:38

---------------
Gates gave us the windows ... Linux gave us the whole house ...
mood
Publicité
Posté le 20-08-2002 à 17:10:06  profilanswer
 

n°198151
El_gringo
Posté le 20-08-2002 à 17:13:45  profilanswer
 

les regexp en Javascript, c à partir de quelle version ?
c interprété par les vieux navigateurs ?

n°198153
SCREAM78
Posté le 20-08-2002 à 17:18:14  profilanswer
 

La version je c po ... en tout cas sur mozilla et opera derniere version ca marche pas mal


---------------
Gates gave us the windows ... Linux gave us the whole house ...
n°198155
--greg--
Posté le 20-08-2002 à 17:20:15  profilanswer
 

bah fait pas ça avec une regex......

n°198157
SCREAM78
Posté le 20-08-2002 à 17:25:09  profilanswer
 

greg > je fais comment alors ??? La g un peu de mal a voir ...


Message édité par SCREAM78 le 20-08-2002 à 17:25:23

---------------
Gates gave us the windows ... Linux gave us the whole house ...
n°198158
--greg--
Posté le 20-08-2002 à 17:26:46  profilanswer
 

bah avec split notamment
enfin ché pas, c surement faisable avec une regex mais bon, c tordu.
tu splittes, tu testes si c un nbre<=255, etc.

n°198184
gm_superst​ar
Appelez-moi Super
Posté le 20-08-2002 à 19:01:04  profilanswer
 

hop ! une petite regex qui permet de savoir si ton IP est bonne
 

function IsValidIp2(ip) {
 
str = /^((((2(5[0-5]|[0-4][0-9]))|([0-1]?[0-9]{1,2}))\.){1,3}|(((2(5[0-5]|[0-4][0-9]))|([0-1]?[0-9]{1,2}))\.){3}((2(5[0-5]|[0-4][0-9]))|([0-1]?[0-9]{1,2})))$/;
 
return str.test(ip);
}


 
Edit: cela dit la solution de --greg-- est certainement plus simple (mais j'avais un peu de temps à perdre :D )


Message édité par gm_superstar le 20-08-2002 à 19:03:30
n°198189
--greg--
Posté le 20-08-2002 à 19:11:38  profilanswer
 

gm_superstar a écrit a écrit :

hop ! une petite regex qui permet de savoir si ton IP est bonne
 

function IsValidIp2(ip) {
 
str = /^((((2(5[0-5]|[0-4][0-9]))|([0-1]?[0-9]{1,2}))\.){1,3}|(((2(5[0-5]|[0-4][0-9]))|([0-1]?[0-9]{1,2}))\.){3}((2(5[0-5]|[0-4][0-9]))|([0-1]?[0-9]{1,2})))$/;
 
return str.test(ip);
}





cte regex :ouch:

n°198193
gm_superst​ar
Appelez-moi Super
Posté le 20-08-2002 à 19:23:07  profilanswer
 

Bah en fait il y a un gros copier/coller dedans, mais vu que M. scream78 voulais aussi que x.x.x. et autres soient valides ça complique un peu :o

n°198439
El_gringo
Posté le 21-08-2002 à 08:48:11  profilanswer
 

Alors, elle marche finalement cette regex ?

mood
Publicité
Posté le 21-08-2002 à 08:48:11  profilanswer
 

n°198467
SCREAM78
Posté le 21-08-2002 à 09:33:21  profilanswer
 

Je vais tester de suite ... je decrypte pour l'instant :D g les cheveux qui commence a tomber lol


---------------
Gates gave us the windows ... Linux gave us the whole house ...
n°198504
SCREAM78
Posté le 21-08-2002 à 10:25:05  profilanswer
 

El_Gringo a écrit a écrit :

Alors, elle marche finalement cette regex ?




Ben elle marche comme la mienne ... meme bug ... on peut rentrer 200 ou 200-20 par ex ... t'avais testé ces cas ?


---------------
Gates gave us the windows ... Linux gave us the whole house ...
n°198729
SCREAM78
Posté le 21-08-2002 à 12:31:13  profilanswer
 

[:gotcha]


---------------
Gates gave us the windows ... Linux gave us the whole house ...
n°198781
gm_superst​ar
Appelez-moi Super
Posté le 21-08-2002 à 13:44:54  profilanswer
 

SCREAM78 a écrit a écrit :

Ben elle marche comme la mienne ... meme bug ... on peut rentrer 200 ou 200-20 par ex ... t'avais testé ces cas ?



Hein ? Comment ça ?
 
200 -> Faux
200-20 -> Faux

n°198813
SCREAM78
Posté le 21-08-2002 à 14:10:44  profilanswer
 

Ca marche ... g comprit pq ca marchait pas ... fo pas utiliser le new RegExp() ca le fait chier. J'avais mit ta regex dedans et ca posait des pb ... mais je pense savoir pq ... il doit mal interpreter le '.' '\.' ... il doit considérer ca comme l'expression "n'importe quel caractere" ... enfin c bizarre ... j'utiliserai plus ca ! Merci !


---------------
Gates gave us the windows ... Linux gave us the whole house ...
n°198852
SCREAM78
Posté le 21-08-2002 à 14:45:37  profilanswer
 

Juste pour le fun ... la regex marche nickel sauf pour 0.0.0.0 qui n'est pas une IP valide :D !! [:koa] (oui je sais !! "tu pousses le bouchon un peu trop loin maurice" lol) ... donc faut faire un split après pour tester ca et la boucle est bouclé héhé !


---------------
Gates gave us the windows ... Linux gave us the whole house ...
n°198882
gm_superst​ar
Appelez-moi Super
Posté le 21-08-2002 à 15:02:52  profilanswer
 

Bah, des IP non valides il y en a des millions (classes non attribuées, broadcast...) la regexp n'est la que pour vérifier le format des IP, par pour vérifier l'existence de chacune d'elles.


Message édité par gm_superstar le 21-08-2002 à 15:07:33
n°198888
SCREAM78
Posté le 21-08-2002 à 15:05:34  profilanswer
 

Oui je sais ... en plus g parlé un peu vite car 0.0.0.0 on peut le voir dans les logs (broadcast DHCP) (je me suis renseigné et je savais po) et vu que j'utilise cette regexp pour un outils de traitement-stats de log fo pas que je l'oubli. VOila merci encore !


---------------
Gates gave us the windows ... Linux gave us the whole house ...

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [JavaScript] Une belle regex bien compliquée ...

 

Sujets relatifs
[JAVASCRIPT] Mettre un lien dans un message d'alerte ???Un p'tit soft qu'il est bien : Process Explorer
form dans une form c'est pas bien et...mettre du Javascript derrière un bouton flash
[PHP][Javascript]inscription online et creation de la liste des inscri[HTML, JS] Pourkoi cette fonction ne marche pas bien ??
[JAVASCRIPT]: un click = un lien + un lien (dans 2 frames différentes)boolay en regex .... help needed
[HTML ou Javascript] Prechargement d'images?[JavaScript] Détection de configuration....... ???
Plus de sujets relatifs à : [JavaScript] Une belle regex bien compliquée ...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR