84 votes

Expressions régulières Javascript - Remplacer les caractères non numériques

Cela marche:

 var.replace(/[^0-9]+/g, '');  
 

Ce simple extrait remplacera tout ce qui n’est pas un nombre avec rien.

Mais les nombres décimaux sont également réels. Donc, j'essaie de comprendre comment inclure une période.

Je suis sûr que c'est très simple, mais mes tests ne fonctionnent pas.

124voto

Jacob Mattison Points 32137

Avez-vous échappé à la période? var.replace(/[^0-9\.]+/g, '');

10voto

Jeff B Points 20021

Le remplacement de quelque chose qui n'est pas un nombre est un peu plus délicat que de remplacer quelque chose qui est un nombre.

Ceux qui suggèrent d'ajouter simplement le point, sont en ignorant le fait que . il est également utilisé comme une période, donc:

This is a test. 0.9, 1, 2, 3 deviendra .0.9123.

Spécifiques regex dans votre problème va beaucoup dépendre de l'objectif. Si vous n'avez qu'un seul numéro dans votre chaîne, vous pouvez faire ceci:

var.replace(/.*?(([0-9]*\.)?[0-9]+).*/g, "$1")

Ce trouve le premier nombre, et remplace la totalité de la chaîne de la correspondance numéro.

7voto

Levi Hackwith Points 3898

Essaye ça:

 var.replace(/[^0-9\\.]+/g, '');
 

1voto

dkinzer Points 6339

Si vous ne voulez pas attraper l'adresse IP avec des décimales:

 var.replace(/[^0-9]+\\.?[0-9]*/g, '');
 

Ce qui n'accroche que des chiffres avec une ou zéro période

1voto

Eric Points 36290

Essaye ça:

 var.replace(/[0-9]*\.?[0-9]+/g, '');
 

Cela correspond uniquement aux décimales valides (par exemple, "1", "1.0", ".5", mais pas "1.0.22")

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X