web-dev-qa-db-fra.com

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

Prenons 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 dans la plage 0 - 9 doivent être conservés.

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

//desired output is 1238

Comment y parvenez-vous en JavaScript? N'oubliez pas qu'il s'agit d'un scénario non-DOM. Par conséquent, jQuery et les autres solutions impliquant des événements de navigateur et de frappe ne conviennent pas.

580
p.campbell

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

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

Si vous en avez besoin pour laisser le point pour les nombres flottants, utilisez cette option.

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

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

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

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

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

Quelque chose dans le genre de:

yourString = yourString.replace ( /[^0-9]/g, '' );
19
Jan Hančič

essayer

myString.match(/\d/g).join('')
var myString = 'abc123.8<blah>'
console.log( myString.match(/\d/g).join('') );
0
Kamil Kiełczewski