Сбросьте все нечисловые символы из строки в JavaScript

Рассмотрим сценарий без DOM, в котором вы хотите удалить все нечисловые символы из строки, используя JavaScript/ECMAScript. Любые символы в диапазоне от 0 - 9 должны быть сохранены.

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

//desired output is 1238

Как бы вы достигли этого простым JavaScript? Пожалуйста, помните, что это сценарий не DOM, поэтому jQuery и другие решения, включающие события браузера и нажатия клавиш, не подходят.

Ответ 1

Используйте строку .replace метод с регулярным выражением \D, который является сокращенным символьным классом, который соответствует всем не-цифрам:

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

Ответ 2

Если вам нужно это оставить точку для чисел с плавающей запятой, используйте этот

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

Ответ 3

Используйте регулярное выражение, если ваша реализация script поддерживает их. Что-то вроде:

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

Ответ 4

Вы можете использовать RegExp для replace все символы без цифр:

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

Ответ 5

Что-то по строкам:

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

Ответ 6

попробуйте

myString.match(/\d/g).join''

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

Ответ 7

мы находимся в 2017, теперь вы также можете использовать ES2016

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

или

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

Результат

1238