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
Qui marche très bien en C# mais pas en Javascript (IE8 et FF3)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 (?:-)?(?:[1-9]{1}[0-9]*|0{1})(?:(?:\.|,)[0-9]*[1-9]{1})?
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 :
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 RegExp('(?:-)?(?:[1-9]{1}[0-9]*|0{1})(?:(?:\.|,)[0-9]*[1-9]{1})?','')).exec(chaine); chaine = (result != null) ? result[0] : '';
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 ?
Partager