sapakus
Messages postés96Date d'inscriptionmercredi 20 août 2003StatutMembreDernière intervention10 février 2011
-
16 févr. 2006 à 04:29
cs_bultez
Messages postés13616Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 2013
-
17 févr. 2006 à 06:30
Bonjour,
Voili voilou : je veux enlever les zéros au début d'une chaine de caractères et garder le reste, et ce en utilisant les expressions régulières avec la fonction replace. La chaine n'est composée que de chiffres et n'a pas forcément de zéro(s*) au début, exemples : "01","164","000406","0123"........
voici mon code :
var chaichaine= "0123456";
var espression =/^(0*)?([1-9][0-9]*)$/; chaichaine.replace(espression,"$2"); alert(chaichaine);
sapakus
Messages postés96Date d'inscriptionmercredi 20 août 2003StatutMembreDernière intervention10 février 20113 17 févr. 2006 à 04:22
ça y est j'ai trouvé l'erreur !
Elle est du à la mauvaise utilisation de la méthode replace qui ne transforme pas une chaine de caractères, mais renvoie une chaine de caractères transformée. Donc voici le code correct avec la regex de Bultez en prime :
var chaichaine= "0123456";
var espression =/(^0*)/g; chaichaine=chaichaine.replace(espression,""); alert(chaichaine);
cs_bultez
Messages postés13616Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 17 févr. 2006 à 06:30
>>Si le nombre saisi ne commence pas par un zéro tout va bien
oui, oui : utiliser parseInt(valeur,10) sinon, si valeur commence par 0 => Octal !
Cordialement. Bul. ~ Mon Site qu'il est à Moi ~<FO>
</FO></S< body>
sapakus
Messages postés96Date d'inscriptionmercredi 20 août 2003StatutMembreDernière intervention10 février 20113 16 févr. 2006 à 22:19
J'ai essayé avec ton code mais j'obtiens toujours 0123456.
La raison de tout ceci est :
dans un champs de formulaire, l'utilisateur doit rentrer un nombre qui doit s'additionner à un autre nombre indiqué en dessous. Or, pour que les chiffres s'alignent correctement (à droite) et ce quelque soit le nombre de chiffres saisi, je suis obligé de changer le sens de l'écriture en rtl par css.
Ensuite, intervient une fonction de controle sur le champs de saisie déclenchée par onkeyup, qui va vérifier ce qui a été saisi et qui va en cas de "mauvais caractère" vider le champs, c'est bien légitime.
Ensuite cette fonction effectue la somme des deux nombres. Et c'est à ce moment que tout dérappe !
Si le nombre saisi ne commence pas par un zéro tout va bien. En revanche si l'internaute imprudent glisse un ou plusieurs zéros devant la fonction eval ne considére plus la saisie comme un entier naturel et la somme devient fausse ! Avouez que c'est tout de même très embarrassant, exemple : 011+500=509 !
Si j'arrive à supprimer les zéros à gauche, je solutionnerai donc le problème et j'améliorerai la présentation du même coup.
S
apakus
Vous n’avez pas trouvé la réponse que vous recherchez ?