JavaScript | Как получить только цифры из строки?

JavaScript | Как получить только цифры из строки?

Есть строка:

var stroka = "Привет1274 ме234ня зо65вут 7987Ефим!"

Нам нужно из этой строки удалить все буквы и оставить только символы и цифры. Как это сделать?

В этом нам помогут регулярные выражения, классы символов и диапазоны классов. Все замены мы будем производить методом replace().

CharacterClass, ClassRanges, NonemptyClassRanges - ECMAScript
CharacterClass, ClassRanges, NonemptyClassRanges — синтаксис ECMAScript

Регулярному выражению будет присвоен глобальный флаг «g» для оценки всех повторений в строке. Заменять мы будем на пустую строку, что будет приравнено к удалению.

stroka.replace(/[^0-9]/g,"")

Получим слипшиеся цифры в виде одной строки:

"1274234657987"

 

Можем учитывать пробелы:

только пробелы
stroka.replace(/[^0-9, ]/g,"")
пробелы и любые другие символы
stroka.replace(/[^0-9,\s]/g,"")

Получим строку:

"1274 234 65 7987"

В диапазон символов мы добавили пробел, поэтому нам вернулась строка с пробелами.

 

Альтернативный синтаксис

Можно использовать специальный экранированный класс символа (CharacterClassEscape), который обозначается буквой D.

Производства CharacterClassEscape - ECMAScript 2021
Производства CharacterClassEscape — ECMAScript 2021

Он находит сопоставления в строке, которые НЕ равны набору из десяти цифр.

Семантика времени выполнения: компиляция в набор символов - производства "CharacterClassEscape :: d" и "CharacterClassEscape :: D"
Семантика времени выполнения: компиляция в набор символов — производства «CharacterClassEscape :: d» и «CharacterClassEscape :: D»

Он экранированный — это значит, что перед D мы должны будем поставить символ обратной косой черты \. Ну и конечно это всё мы будем вводить внутри шаблона регулярного выражения, который обозначается границами в виде двух косых линий / /.

 

То есть мы можем найти в строке все места где символ не соответствует одному из: 0123456789

var stroka = "Привет1274 ме234ня зо65вут 7987Ефим!"
stroka.replace(/\D/g,'')
'1274234657987'
Производство CharacterClassEscape :: D - ECMAScript
Производство CharacterClassEscape :: D — ECMAScript

 

Информационные ссылки

Стандарт ECMAScript — Раздел «CharacterClass» — https://tc39.es/ecma262/#sec-characterclass

Стандарт ECMAScript — Раздел «ClassRanges» — https://tc39.es/ecma262/#sec-classranges

Стандарт ECMAScript — Раздел «NonemptyClassRanges» — https://tc39.es/ecma262/#sec-nonemptyclassranges

Стандарт ECMAScript — Раздел «CharacterClassEscape :: D» — https://tc39.es/ecma262/multipage/text-processing.html#prod-CJ70Staj

Стандарт ECMAScript — Раздел «String.prototype.replace ( searchValue, replaceValue )» — https://tc39.es/ecma262/#sec-string.prototype.replace

Стандарт ECMAScript — Раздел «get RegExp.prototype.flags» — https://tc39.es/ecma262/#sec-get-regexp.prototype.flags

ECMAScript | Условные обозначения