IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Enlever zero (0) inutile devant un ou plusieurs nombres en Javascript (regex?) [RegExp]


Sujet :

JavaScript

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Homme Profil pro
    Reconverti Dev Web
    Inscrit en
    Septembre 2019
    Messages
    88
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 46
    Localisation : France, Seine et Marne (�le de France)

    Informations professionnelles :
    Activit� : Reconverti Dev Web
    Secteur : B�timent Travaux Publics

    Informations forums :
    Inscription : Septembre 2019
    Messages : 88
    Par d�faut Enlever zero (0) inutile devant un ou plusieurs nombres en Javascript (regex?)
    Bonjour � tous,

    Je cherche une regex qui me permettrai d'enlever les 0 devant un nombre ou plusieurs nombre dans un string afin de pouvoir utiliser la fonction eval() sans code erreur. En effet la fonction eval() peut interpreter les 0 comme du binaire. J'ai tent� plusieurs regex, mais aucune n'est efficace.

    Prenons l'exemple suivant:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    let str = "010 + 150.009 + 000.01 + 1000"
    J'aimerai avoir comme resultat:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    str = "10 + 150.009 + 0.01 + 1000"
    Si une regex est impossible, avez vous un script qui fonctionne correctement?

    Cdt.

  2. #2
    R�dacteur/Mod�rateur

    Avatar de SpaceFrog
    Homme Profil pro
    D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activit� : D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    let str = "010 + 150.009 + 000.01 + 1000"
     
     
    reg=/(^|[^\d.])0+(?!\.)/g;
     
    str= str.replace(reg,'')
    console.log(str)
    Ma page Developpez - Mon Blog 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

    Venez sur le Chat de D�veloppez !

  3. #3
    Mod�rateur
    Avatar de joel.drigo
    Homme Profil pro
    Ing�nieur R&D - D�veloppeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur R&D - D�veloppeur Java
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par d�faut
    Salut,

    J'aurais fait /(?<!\d|\.)0+(?!\D)(?!$)/g.

    L'expression de @SpaceFrog supprime les 0 (ou 00, 000...) (et les espaces devant 0 en prime).
    L'expression "�a marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le probl�me.
    La plupart des r�ponses � vos questions sont d�j� dans les FAQs ou les Tutoriels, ou peut-�tre dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement pos�e et r�dig�e et vous aurez plus de chances de r�ponses adapt�es et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'�diteur de messages).
    Nouveau sur le forum ? Consultez Les R�gles du Club.

  4. #4
    R�dacteur/Mod�rateur

    Avatar de SpaceFrog
    Homme Profil pro
    D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activit� : D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par d�faut
    ha oui j'avais pas vu pour les espaces

    Je ne me l'explique pas d'ailleurs

    voici une autre approche :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    str="10 + 000150.009 + 0000.01 + 1000";
    reg=/\b(0+)(\d+(\.?\d+))/g;
     
    str=str.replace(reg,"$2");
    console.log(str);
    Ma page Developpez - Mon Blog 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

    Venez sur le Chat de D�veloppez !

  5. #5
    Invit�
    Invit�(e)
    Par d�faut
    Bonjour,

    1- �a ne gene personne qu'eval() soit dangereux ?

    2- et s'il n'y a pas d'espace apr�s les signes +,-,�,�,( ?

  6. #6
    R�dacteur/Mod�rateur

    Avatar de SpaceFrog
    Homme Profil pro
    D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activit� : D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par d�faut
    @jr
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    str="10 + (000150.009 + 0000.01) +1000";
    reg=/0*(\d+(\.\d+)?)/g;
    str=str.replace(reg,"$1");
    console.log(str);
    Ma page Developpez - Mon Blog 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

    Venez sur le Chat de D�veloppez !

  7. #7
    Expert confirm�
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Ao�t 2003
    Messages
    3 684
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activit� : danseur

    Informations forums :
    Inscription : Ao�t 2003
    Messages : 3 684
    Par d�faut
    Le danger d'eval est certain sans contr�le; mais on va dire que nadfri2019 y a pens�;

    C'est difficile d'envisager tous les cas en 1 fois; j'ai fait la regexp en 4 �tapes pour ma derni�re calculette et je n'ai pas essay� de compacter depuis:

    Code javascript : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    let nozero=machaine.replace(
    			//simplification des zéros à* gauche
    			/([^\d.]|^)0+/g,"$1"+"0").replace(
    			// suppression du dernier zéro à* gauche uniquement avant un chiffre
    			/([^\d.]|^)0(\d)/g,"$1$2").replace(
    			// ajout d'un zéro à* la partie entière pour décimaux < 1, si l'utilisateur l'a oublié
    			/([^\d]|^)\./g,"$1"+"0.").replace(
    			//suppression de la partie décimale si elle est nulle
    			/\.(0*)(\D|$)/g,"$2");

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. enlever zero � gauche
    Par minooo dans le forum Langage SQL
    R�ponses: 3
    Dernier message: 15/03/2010, 11h49
  2. Enlever les 0 inutiles
    Par Chacha35 dans le forum D�veloppement
    R�ponses: 3
    Dernier message: 02/12/2009, 18h55
  3. [MySQL] Chiffre d�cimal, enlever les z�ros inutiles
    Par morgan47 dans le forum PHP & Base de donn�es
    R�ponses: 7
    Dernier message: 03/07/2007, 02h46
  4. Enlever les services inutiles ?
    Par Micha�l dans le forum S�curit�
    R�ponses: 6
    Dernier message: 25/10/2005, 16h12
  5. Enlever les espaces inutiles d'un AnsiString
    Par jamesb dans le forum C++Builder
    R�ponses: 2
    Dernier message: 27/01/2005, 12h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo