Убрать все нечисловые символы из строки в JavaScript - PullRequest
587 голосов
/ 07 декабря 2009

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

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

//desired output is 1238

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

Ответы [ 7 ]

1218 голосов
/ 07 декабря 2009

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

myString = myString.replace(/\D/g,'');
316 голосов
/ 23 февраля 2012

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

var s = "-12345.50 €".replace(/[^\d.-]/g, ''); // gives "-12345.50"
39 голосов
/ 07 декабря 2009

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

myString.replace(/[^0-9]/g, '');
21 голосов
/ 07 декабря 2009

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

var myString = 'abc123.8<blah>';
myString = myString.replace(/[^\d]/g, ''); // 1238
19 голосов
/ 07 декабря 2009

Что-то вроде:

yourString = yourString.replace ( /[^0-9]/g, '' );
0 голосов
/ 24 апреля 2019

1001 * попробовать *

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

var myString = 'abc123.8<blah>'
console.log( myString.match(/\d/g).join('') );
0 голосов
/ 09 июля 2017

мы находимся 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...