Bonjour à tous

J'effectue un controle de saisie via une expression régulière d'un nombre décimal poisitif ou négatif, avec ou sans virugule)

J'utilise pour cela l'expression régulière
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
(?:-)?(?:[1-9]{1}[0-9]*|0{1})(?:(?:\.|,)[0-9]*[1-9]{1})?
Qui marche très bien en C# mais pas en Javascript (IE8 et FF3)

En effet une saisie comme 000001 est acceptée alors qu'elle ne le devrait pas

Par contre l'inversion du genre 1.2500000 est refusé et bien remplacé par 1.25

Le code JS est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
result = (new RegExp('(?:-)?(?:[1-9]{1}[0-9]*|0{1})(?:(?:\.|,)[0-9]*[1-9]{1})?','')).exec(chaine);
chaine = (result != null) ? result[0] : '';
Notons que le code JS suivant produit le même résultat
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
result = (new String(chaine)).match('(?:-)?(?:[1-9]{1}[0-9]*|0{1})(?:(?:\.|,)[0-9]*[1-9]{1})?');
chaine = (result != null) ? result[0] : '';

Une idée sur la raison ?