Question Supprimer tous les caractères non numériques de la chaîne en JavaScript


Considérez un scénario non DOM dans lequel vous souhaitez supprimer tous les caractères non numériques d'une chaîne à l'aide de JavaScript / ECMAScript. Tous les caractères compris entre 0 et 9 doivent être conservés.

var myString = 'abc123.8<blah>';

//desired output is 1238

Comment y arriveriez-vous en JavaScript? S'il vous plaît rappelez-vous qu'il s'agit d'un scénario non DOM, donc jQuery et d'autres solutions impliquant des événements de navigateur et de pression ne sont pas adaptés.


479
2017-12-07 18:59


origine


Réponses:


Utilisez la chaîne .replace méthode avec une regex de \D, qui est une classe de caractères abrégés qui correspond à tous les non-chiffres:

myString = myString.replace(/\D/g,'');

990
2017-12-07 19:14



Si vous avez besoin de cela pour laisser le point pour les nombres flottants, utilisez ceci

var s = "-12345.50 €".replace(/[^\d.-]/g, ''); // gives "-12345.50"

271
2018-02-23 09:05



Utilisez une expression régulière si votre implémentation de script les prend en charge. Quelque chose comme:

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

31
2017-12-07 19:03



Vous pouvez utiliser un RegExp pour remplacer tous les caractères non numériques:

var myString = 'abc123.8<blah>';
myString = myString.replace(/[^\d]/g, ''); // 1238

19
2017-12-07 19:02



Quelque chose dans le genre de:

yourString = yourString.replace ( /[^0-9]/g, '' );

14
2017-12-07 19:01



nous sommes dans 2017 maintenant vous pouvez également utiliser ES2016

var a = 'abc123.8<blah>';
console.log([...a].filter( e => isFinite(e)).join(''));

ou

console.log([...'abc123.8<blah>'].filter( e => isFinite(e)).join(''));  

Le résultat est

1238

-3
2017-07-09 09:04