Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Flash/Flex > Flash > AS3
AS3 Questions relatives à la programmation ActionScript 3 (Cours AS3)
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 09/02/2012, 21h08   #1
Invité de passage
 
Homme
Développeur Web
Inscription : février 2012
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : Arts - Culture

Informations forums :
Inscription : février 2012
Messages : 2
Points : 0
Points : 0
Par défaut Problème étrange avec une RegExp

Bonjour,

je rencontre un problème étrange avec une expression régulière, voici le code :
Code :
1
2
3
4
var pattern:RegExp = /(-?[0-9]+)/g;
var test:String = '12.3 234,4 54 jhg -53455 34';
var result:Object = pattern.exec(test);
trace(result);
Le pattern est censé me sortir tous les nombres de la chaîne de caractère, il marche parfaitement quand je le test sur cette app : http://gskinner.com/RegExr/

mais dans mon fla il me sort le premier cas dupliqué en l’occurrence : [12, 12]
alors qu'il devrait sortir : [12, 3, 234, 4, 54, -53455, 34]
je bloque là dessus depuis plusieurs heures et je deviens fou, j'ai testé sur d'autres ordinateurs, sur différentes version de flash (CS4 et CS5.5).
j'ai testé des syntaxes alternatives \d à la place de [0-9] par exemple.

en plus ça marche parfaitement sur l'app de Grant Skinner.

auriez-vous déjà rencontré un problème similaires, ou des idée de pistes à explorer ?
serait-ce un bug ?

merci d'avance.
rolda est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 22h29   #2
Membre du Club
 
Homme
Développeur informatique
Inscription : décembre 2009
Messages : 40
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : décembre 2009
Messages : 40
Points : 66
Points : 66
Bonjour,

Votre code se comporte normalement, c'est juste que vous n'utilisez pas correctement pattern.exec().

Ce code ci devrait fonctionner
Code :
1
2
3
4
5
6
7
8
 
var pattern:RegExp = /(-?[0-9]+)/g;
var test:String = "12.3 234,4 54 jhg -53455 34";
var result:Object = pattern.exec(test);
while (result != null) {
    trace (result[0]);
    result = pattern.exec(test);
}
Il s'agit d'appeler exec() plusieurs fois pour tester plusieurs sous-chaînes.
Voir la doc d'exec() pour plus d'infos.
Pourcentage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2012, 10h56   #3
Invité de passage
 
Homme
Développeur Web
Inscription : février 2012
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : Arts - Culture

Informations forums :
Inscription : février 2012
Messages : 2
Points : 0
Points : 0
Merci beaucoup,

je comprends mieux, et du coup il faut que j'utilise la méthode String.match() pour obtenir le résultat escompté sans passer par une boucle :

Code :
1
2
3
4
5
var pattern:RegExp = /-?\d+/gi;
var test:String = '12.3 234,4 54 jhg -53455 34';
var result:Object = pattern.exec(test);
trace( result ); // 12
trace( test.match( pattern ) ); // 12,3,234,4,54,-53455,34
je me disais bien que c'était moi le bug !
rolda 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 09h44.


 
 
 
 
Partenaires

Hébergement Web