Удалить все нечисловые символы из строки в JavaScript
Проблема: мне нужно удалить все ненумерические символы из строки с использованием JavaScript/ECMAScript в сценарии, не связанном с DOM. Я хочу оставить только символы в диапазоне от 0 до 9.
Вот пример строки, с которой я работаю:
var myString = 'abc123.8<blah>';
Я хотел бы получить на выходе: 1238
.
Как я могу это сделать с помощью чистого JavaScript? Пожалуйста, учитывайте, что это не DOM-сценарий, поэтому решения, связанные с jQuery или событиями клавиатуры, не подойдут.
5 ответ(ов)
Если вам нужно оставить точку для вещественных чисел, используйте следующий код:
var s = "-12345.50 €".replace(/[^\d.-]/g, ''); // возвращает "-12345.50"
Этот код удаляет все символы, кроме цифр, точки и знака минус.
Вы можете использовать метод replace
, чтобы удалить все символы, кроме цифр, из строки. Вот пример кода на JavaScript:
yourString = yourString.replace(/[^0-9]/g, '');
В этом коде регулярное выражение /[^0-9]/g
ищет все символы, которые не являются цифрами (от 0 до 9), и заменяет их на пустую строку. Флаг g
означает, что замена будет произведена глобально, то есть для всех вхождений в строке. Таким образом, в результате вы получите строку, содержащую только цифры.
Вы можете использовать регулярное выражение, если ваша реализация скриптов это поддерживает. Например, вы можете применить следующий код:
myString.replace(/[^0-9]/g, '');
Этот код заменит все символы, кроме цифр, на пустую строку, effectively оставляя только числа в строке myString
.
Вы можете использовать следующую короткую функцию, чтобы удалить все нечисловые символы, но сохранить десятичную точку и вернуть число:
const parseNum = str => +str.replace(/[^.\d]/g, '');
let str = 'a1b2c.d3e';
console.log(parseNum(str));
В этой функции мы применяем регулярное выражение [^.\d]
, которое находит все символы, кроме цифр и десятичной точки, и заменяем их на пустую строку. Затем мы используем оператор +
для преобразования полученной строки в число. В результате, для заданной строки 'a1b2c.d3e'
, функция вернет 12.3
.
Проблема с ответами выше заключается в том, что они предполагают использование целых чисел. Однако, если вам необходимо получить число с плавующей запятой, предыдущая регулярная строка удалит десятичную точку.
Чтобы исправить это, вам нужно использовать отрицательный класс символов с ^
, как показано ниже:
var mystring = mystring.replace(/[^0-9.]/g, '');
Эта регулярка позволит сохранить как целые числа, так и числа с плавающей запятой. Обратите внимание, что это решение не учитывает ситуацию, когда в строке могут встречаться несколько десятичных точек. Если это проблема, то вам следует дополнительно обработать такую ситуацию, например, оставляя только первую точку.
Как присвоить многострочную строку переменной?
Преобразование объекта JS в строку JSON
Преобразование объекта в строку
Как преобразовать строку, разделённую запятыми, в массив?
Как узнать, содержится ли определенная строка в массиве на JavaScript/jQuery?