Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/09/2011, 18h38   #1
Futur Membre du Club
 
Inscription : décembre 2007
Messages : 252
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 252
Points : 16
Points : 16
Par défaut addresses ip 6

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
value='aaaa:0000:0000:0000:0000:0000:0001:0002'
console.log(value)
value = value.toLowerCase().replace(/(\:)0+/g, "$1").replace(/\:{3,}/, "::");
console.log(value) // ok
 
value='aaaa:0000:0000:0000:0000:0000:0001:0000'
console.log(value)
value = value.toLowerCase().replace(/(\:)0+/g, "$1").replace(/\:{3,}/, "::");
console.log(value) //manque le 0 final
 
value='aaaa:0000:0002:0002:0000:0000:0001:0002'
console.log(value)
value = value.toLowerCase().replace(/(\:)0+/g, "$1").replace(/\:{3,}/, "::");
console.log(value) // 1 seule fois '::'
bonjour j'ai ce souci, pour bien réduire les adresse ipv6

ce regex ne marche pas, comment avoir bien les 0 à la fin, et comment n'avoir '::' qu'une seule fois max

merci beaucoup aux experts regex
____22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 08h28   #2
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 040
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 040
Points : 45 141
Points : 45 141
peux tu expliciter exactement ce que tu veux comme résultat final ?

supprimer tous les zeros initiaux ?

aller je me lance...
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
value="aaaa:0000:0000:0000:0000:0000:0001:0002;aaaa:0000:0000:0000:0000:0000:0001:0000;aaaa:0000:0002:0002:0000:0000:0001:0002"
tabvalue=value.split(';')
 
 
function foo(ip){
res=ip.split(/:0+(?=[^0]|$)/).join(':')
return res;
}
 
var ips=""
j=-1
while (tabvalue[++j]){
ips+=foo(tabvalue[j])+'\n'
}
 
alert(ips)
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 11h17   #3
Futur Membre du Club
 
Inscription : décembre 2007
Messages : 252
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 252
Points : 16
Points : 16
le regex doit permettre de formatter les adresse comme http://tools.ietf.org/html/rfc2373#section-2.2

celui que j'ai posté marche presque, mais a enlevé le 0 final dans le 2e cas ce qui est pas bon (devrait finir par ':0'

et a mis deux fois '::' dans le 3e cas, alors que ça doit apparaitre 1 fois max

j'ai un peu du mal avec les regex donc je suis venu cherché un peu d'aide ici, merci à vous
ton script n'est pas bon SpaceFrog, il ne faut pas supprimer les 0 comme cela
____22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 11h36   #4
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 040
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 040
Points : 45 141
Points : 45 141
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
value="aaaa:0000:0000:0000:0000:0000:0001:0002;aaaa:0000:0000:0000:0000:0000:0001:0000;aaaa:0000:0002:0002:0000:0000:0001:0002"
tabvalue=value.split(';')
 
 
function foo(ip){
res=ip.split(/:0{2,3}/).join(':')
return res;
}
 
var ips=""
j=-1
while (tabvalue[++j]){
ips+=foo(tabvalue[j])+'\n'
}
 
alert(ips)
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 11h39   #5
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 040
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 040
Points : 45 141
Points : 45 141
ou
plus direct
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
value="aaaa:0000:0000:0000:0000:0000:0001:0002;aaaa:0000:0000:0000:0000:0000:0001:0000;aaaa:0000:0002:0002:0000:0000:0001:0002"
tabvalue=value.split(';')
 
 
function foo(ip){
res=ip.replace(/:0{1,3}/g,":")
return res;
}
 
var ips=""
j=-1
while (tabvalue[++j]){
ips+=foo(tabvalue[j])+'\n'
}
 
alert(ips)
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 11h43   #6
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 040
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 040
Points : 45 141
Points : 45 141
heu en fait
Code :
res=ip.replace(/(^|(:))0{1,3}/g,"$2")
au cas ou il y ait des 0 au début

[edit]
Code :
res=ip.replace(/(^|:)0{1,3}/g,"$1")
fonctionne tout aussi bien ^^
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 12h08   #7
Futur Membre du Club
 
Inscription : décembre 2007
Messages : 252
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 252
Points : 16
Points : 16
ça donne
Code :
1
2
3
aaaa:0:0:0:0:0:1:2
aaaa:0:0:0:0:0:1:0
aaaa:0:2:2:0:0:1:2
le bon format est quelquechose comme

Code :
1
2
3
aaaa::1:2
aaaa::1:0
aaaa::2:2:0:0:1:2
je pense pas que tu peux y arriver en un seul regex, ou sinon c'est vraiment fort

soit utiliser les 2 premiers regex que j'avais mis
en fait le premier supprime les 0, le deuxième remplace les '::::' par juste '::'
mais le problème est que ça doit être fait qu'une seule fois dans l'adresse
et remettre des 0, après, compliqué,

ta solution est bien meilleure, il faut un deuxième regex pour remplacer les groupes de 0 intérieurs, leading ou trailing par '::', mais une seule fois donc regex pas global, au pire en faisant la première occurence, tant pis si ce n'est pas la plus longue

':0:', ':0:0:', ':0:0:0:', ':0:0:0:0:',... par '::'
'0:0:', '0:0:0:', ...par '::'
':0:0', ':0:0:0', ... par '::'

edit
Code :
1
2
'aaaa:0000:0000:0000:0000:0000:0001:0000:0000:0000'.replace(/(^|:)0{1,3}/g,"$1").replace(/((0:)|:)+(0:0)((:0)|:)+/, "::")
'aaaa:0001:0002:0003:0000:0001:0000:0000:0000'.replace(/(^|:)0{1,3}/g,"$1").replace(/((0:)|:)+(0:0)((:0)|:)+/, "::")
donne
Code :
"aaaa::1:0:0:0" et "aaaa:1:2:3:0:1::"
c'est ok, mais je suis pas sûr que c'est correct pour toutes les adresses
____22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 14h02   #8
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 040
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 040
Points : 45 141
Points : 45 141
Essaye
Code :
res=ip.replace(/((^|:)(0(?!$))+){1}((:)0(0(?!$))+)*/g,"$2$5")
si cela ne donne pas le resultat escompté dis moi ce que tdoit retrouner chacun des cas suivants :

aaaa:0000:0000:0000:0000:0000:0001:0002
aaaa:0000:0000:0000:0020:0000:0001:0000
aaaa:0000:0002:0002:0000:0000:0001:0002
000a:0000:0000:0000:0000:0000:0001:0000
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 14h57   #9
Futur Membre du Club
 
Inscription : décembre 2007
Messages : 252
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 252
Points : 16
Points : 16
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
'aaaa:0000:0000:0000:0000:0000:0001:0002'.replace(/((^|:)(0(?!$))+){1}((:)0(0(?!$))+)*/g,"$2$5")
"aaaa::1:2" // pass
'aaaa:0000:0000:0000:0020:0000:0001:0000'.replace(/((^|:)(0(?!$))+){1}((:)0(0(?!$))+)*/g,"$2$5")
"aaaa::20::1:0"  // fail -> "aaaa::20:0:1:0"
'aaaa:0000:0002:0002:0000:0000:0001:0002'.replace(/((^|:)(0(?!$))+){1}((:)0(0(?!$))+)*/g,"$2$5")
"aaaa::2:2::1:2"   // fail -> "aaaa:0:2:2::1:2"
'000a:0000:0000:0000:0000:0000:0001:0000'.replace(/((^|:)(0(?!$))+){1}((:)0(0(?!$))+)*/g,"$2$5")
"a::1:0"  // pass
 
// et un autre en plus
'aaaa:0000:0000:0000:0001:0000:0000:0000'.replace(/((^|:)(0(?!$))+){1}((:)0(0(?!$))+)*/g,"$2$5")
"aaaa::1::0"  // fail -> "aaaa::1:0:0:0" ou "aaaa:0:0:0:1::"
edit
comme il y a d'abord un remplacement global (dans chaque groupe)
puis il doit y avoir un seul remplacement par '::', c'est pour ça que je ne pense pas que c'est possible en un seul regex
____22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2011, 10h27   #10
Expert Confirmé
 
Avatar de sekaijin
 
Femme
Urbaniste
Inscription : juillet 2004
Messages : 1 421
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 48
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 1 421
Points : 2 809
Points : 2 809
tu trouveras dans ce source
http://jeanyves.terrien.free.fr/org....chekmethods.js
une regexp nommé IPV6 et une autre IPV6OrNull
qui matchent IPV6 (créées pour valider des formulaires)

A+JYT
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/09/2011, 10h47   #11
Membre éclairé
 
Homme
F5(){F5}
Inscription : avril 2008
Messages : 256
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : F5(){F5}
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2008
Messages : 256
Points : 320
Points : 320
en fait, j'ai upvoté, mais la réponse répond pas à la question.
La question c'est de simplifier une ipv6, pas d'en checker la validité.

J'en profite pour rajouter une regex :
Code :
var ip='00aa:0:0:0:0FF0:000:0020:000:00F';
//remplace une seule fois une suite docurrence de 0:000:0 etc par ::
Code :
ip.replace(/([0]{1,4}:)+/, ':');
//remplace un truc style 0000 par 0 et 000F par F pour chacun des groupes se terminant par :
Code :
.replace(/((0+)([0-9a-fA-F]+):)/g,'$3:');
//même chose pour le dernier groupe
Code :
replace(/:(0+)([0-9a-fA-F])$/,':$2');
bref un truc style
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var ips=['aaaa:0000:0000:0000:0000:0000:0001:0002',
'aaaa:0000:0000:0000:0000:0000:0001:0000',
'aaaa:0000:0002:0002:0000:0000:0001:0002',
'aaaa:0:0:0:0:0:1:2',
'aaaa:0:0:0:0:0:1:0',
'aaaa:0:2:2:0:0:1:2',
'aaaa:0000:0000:0000:0000:0000:0001:0000:0000:0000',
'aaaa:0001:0002:0003:0000:0001:0000:0000:0000',
'aaaa:0000:0000:0000:0000:0000:0001:0002',
'aaaa:0000:0000:0000:0020:0000:0001:0000',
'aaaa:0000:0002:0002:0000:0000:0001:0002',
'000a:0000:0000:0000:0000:0000:0001:0000',
'aaaa:0000:0000:0000:0001:0000:0000:0000',
'aaaa::1::0'];
 
for(var i in ips){
var ip=ips[i];
ip = ip.replace(/([0]{1,4}:)+/, ':').replace(/((0+)([0-9a-fA-F]+):)/g,'$3:').replace(/:(0+)([0-9a-fA-F])$/,':$2');
console.log(ip);
}
//affiche
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
aaaa::1:2
aaaa::1:0
aaaa::2:2:0:0:1:2
aaaa::1:2
aaaa::1:0
aaaa::2:2:0:0:1:2
aaaa::1:0:0:0
aaaa:1:2:3::1:0:0:0
aaaa::1:2
aaaa::20:0:1:0
aaaa::2:2:0:0:1:2
a::1:0
aaaa::1:0:0:0
aaaa::1::0
galerien69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2011, 10h54   #12
Futur Membre du Club
 
Inscription : décembre 2007
Messages : 252
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 252
Points : 16
Points : 16
merci sekaijin
le match avec ce regex me servira surement

mais j'ai surtout besoin d'un regex utilisable avec replace pour formatter les adresses, les reduire en taille
____22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2011, 14h41   #13
Futur Membre du Club
 
Inscription : décembre 2007
Messages : 252
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 252
Points : 16
Points : 16
galerien69

'aaaa::1::0' n'est pas valide
car on ne sait pas si c'est 'aaaa:0:0:1:0:0:0:0' ou 'aaaa:0:0:0:0:1:0:0' ...

'aaaa:0000:0000:0000:0001:0000:0000:0000' se formatte par 'aaaa::1:0:0:0' ou 'aaaa:0:0:0:1::'

celui que j'avais mis semble marcher pour les adresses que j'ai essayé
Code :
'0000:0001:0002:0000:0a00:0001:0000:0000:0000'.replace(/(^|:)0{1,3}/g,"$1").replace(/((0:)|:)*(0:0)((:0)|:)*/, "::")
____22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2011, 16h03   #14
Membre éclairé
 
Homme
F5(){F5}
Inscription : avril 2008
Messages : 256
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : F5(){F5}
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2008
Messages : 256
Points : 320
Points : 320
Ben jtavouerai que je me suis pas embêter sur les tests.

Je vous ai vu en proposer plein, je me suis dit qu'ils avaient intélligemment été choisis.
Donc le test 'aaaa::1::0' n'est pas valide, ben ui.

Après on peut tester l'ip
f:f

la regex donnera aussi f:f, pourtant l'ip qu'on teste est pas valide non plus...

Mais bon, chui ok que j'aurais pas du recopier toutes les ip de tests sans les regarder ...
galerien69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2011, 16h13   #15
Futur Membre du Club
 
Inscription : décembre 2007
Messages : 252
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 252
Points : 16
Points : 16
a priori ce que t'a fait est bon
tes deux derniers regex pourrait pas etre compacté en un?
si au final il est plus court je le prend!
____22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2011, 16h15   #16
Membre éclairé
 
Homme
F5(){F5}
Inscription : avril 2008
Messages : 256
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : F5(){F5}
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2008
Messages : 256
Points : 320
Points : 320
je sais pas, chui pas un pro de la regex, j'imagine que oui, mais bon...

de toute façon, ya aucun intérêt à la faire plus courte pour la rendre illisible.
galerien69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2011, 17h02   #17
Futur Membre du Club
 
Inscription : décembre 2007
Messages : 252
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 252
Points : 16
Points : 16
ok galerien 69

en fait tes deux derniers regex je les remplace par
Code :
.replace(/(^|:)0{1,3}/g,"$1")
sinon, ton premier regex m'interesse,
Code :
.replace(/([0]{1,4}:)+/, ':');
par contre marche pas sur
Code :
1
2
3
'aaaa:0000:00e0:0000:0f00:0000:0001:0000:0000:0000'.replace(/([0]{1,4}:)+/, ':').replace(/(^|:)0{1,3}/g,"$1");
"aaaa::e0:0:f00:0:1:0:0:0"
"aaaa:0:e0:0:f00:0:1::" //<-ce qu'il faut avoir
mon regex ne marche pas non plus
Code :
1
2
3
'aaaa:0000:00e0:0000:0f00:0000:0001:0000:0000:0000'.replace(/(^|:)0{1,3}/g,"$1").replace(/((0:)|:)*(0:0)((:0)|:)*/, "::")
"aaaa:0:e::f00:0:1:0:0:0"
"aaaa:0:e0:0:f00:0:1::" //<-ce qu'il faut avoir

j'ai changé ton regex en: peut etre que ça marche, je dois essayer d'autres adresses
Code :
1
2
3
'aaaa:0000:00e0:0000:0f00:0000:0001:0000:0000:0000'.replace(/([0]{4}:*){2,}/, ':').replace(/(^|:)0{1,3}/g,"$1");
"aaaa:0:e0:0:f00:0:1::"
"aaaa:0:e0:0:f00:0:1::" //<-ce qu'il faut avoir
____22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2011, 17h14   #18
Membre éclairé
 
Homme
F5(){F5}
Inscription : avril 2008
Messages : 256
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : F5(){F5}
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2008
Messages : 256
Points : 320
Points : 320
Code :
1
2
3
.replace(/([0]{2,4}:)+/, ':');
 
(c'est {2,4} au lieu de {1,4}
ben non.

Si tu mets {2,4}, ca veut dire que si t'as une suite
0:00:0:
tu vas juste remplacer
0::0, ce n'est pas désiré.

sinon, je sais pas ce que veut dire
galerien69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2011, 17h56   #19
Futur Membre du Club
 
Inscription : décembre 2007
Messages : 252
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 252
Points : 16
Points : 16
Code :
1
2
3
'aaaa:0000:00e0:0000:0f00:0000:0001:0000:0000:0000'.replace(/([0]{1,4}:)+/, ':');
"aaaa::00e0:0000:0f00:0000:0001:0000:0000:0000"//<- pas correct
"aaaa:0000:00e0:e0:0000:0f00:0000:0001::" //<- correct
(^| parenthèse capturant le début de la chaine ou occurence de ':'

edit
en gros voilà le truc qui marche
Code :
1
2
3
4
5
6
7
ip='0000:a000:0000:00e0:0000:0f00:0000:0001:0000:0000:0000' //pour tester la fin
ip='0000:0000:a000:0000:00e0:0000:0f00:0000:0001:0000:0000:0000' //pour tester le debut
ip=':'+ip+':'
ip=ip.replace(/(0{4}:){2,}/, ':').replace(/(^|:)0{1,3}/g,"$1")
if (ip.indexOf('::')!=0) ip=ip.substring(1) //on enlève le ':' du début
if (ip.indexOf('::')!=ip.length-2) ip=ip.substring(0,ip.length-1) //on enlève le ':' du début
ip
très moche c'est pour ça que si un regex peut faire ça, ce serait top

edit2
j'aurai juste besoin d'aide ce regex marche presque (sauf le 0 final)
Code :
1
2
3
ip='0000:a000:0000:00e0:0000:0f00:0000:0001:0000:0000:0000'
ip=ip.replace(/(^|:)0{1,3}/g,"$1").replace(/(^|:)(0:){2,}|(:0){2,}(:|$)/, '::')
"0:a000:0:e0:0:f00:0:1::0"
____22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h07.


 
 
 
 
Partenaires

Hébergement Web