Перейти к содержанию
  • Лента
  • Категории
  • Последние
  • Метки
  • Популярные
  • Пользователи
  • Группы
Свернуть
exlends
Категории
  1. Главная
  2. Категории
  3. Языки программирования
  4. JavaScript
  5. JS удалить все кроме цифр: простые способы с примерами кода

JS удалить все кроме цифр: простые способы с примерами кода

Запланировано Прикреплена Закрыта Перенесена JavaScript
javascriptрегуляркицифры
1 Сообщения 1 Постеры 3 Просмотры
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • hannadevH Не в сети
    hannadevH Не в сети
    hannadev
    написал отредактировано
    #1

    Часто в JavaScript нужно очистить строку от всего лишнего - оставить только цифры. Это полезно для обработки пользовательского ввода, телефонов, цен или ID. Такие задачи возникают при валидации форм или парсинге данных.

    Метод работает быстро и надежно с помощью регулярных выражений. Вы получите чистые числа без букв, пробелов и символов. Разберем основные подходы шаг за шагом.

    Основной метод: replace с регуляркой

    Метод string.replace() - это стандартный инструмент в JS для замены символов. Для удаления всего кроме цифр используем регулярное выражение /[^0-9]/g. Первый символ ^ внутри скобок значит ‘не’, 0-9 - диапазон цифр, g - глобальный поиск по всей строке.

    Возьмем пример: строка “Телефон: +7 (999) 123-45-67”. После обработки останется “79991234567”. Это идеально для номеров карт, дат или счетчиков. Такой подход универсален и работает в любом браузере.

    • Простой код:
    const str = "Телефон: +7 (999) 123-45-67";
    const onlyDigits = str.replace(/[^0-9]/g, "");
    console.log(onlyDigits); // "79991234567"
    
    • Флаг g обязателен - без него заменится только первый символ.
    • Работает с русскими буквами, эмодзи и спецсимволами - все уйдет.
    Исходная строка Результат Длина до Длина после
    “Цена 1 234 руб.” “1234” 15 4
    “+7-999-123-45-67” “79991234567” 14 11
    “abc123def” “123” 7 3

    Альтернатива: \D для нецифр

    Регулярка \D - это сокращение для ‘любой нецифровой символ’. Она эквивалентна /[^0-9]/g и часто короче. Метод replace с \D/g удаляет буквы, пробелы, знаки препинания.

    Пример: “Абра23кадабра” превратится в “23”. Полезно в скриптах, где строка приходит из API или формы. Обратите внимание: \D не различает Unicode-цифры, но для латиницы и кириллицы работает идеально.

    • Код с \D:
    const text = "Абра23кадабра";
    const nums = text.replace(/\D/g, "");
    console.log(nums); // "23"
    
    • Поддерживает многострочные строки с флагом m.
    • Быстрее на больших текстах, чем ручной цикл.

    Таблица сравнения:

    Регулярка Полное написание Преимущества Когда использовать
    /[^0-9]/g любой кроме 0-9 Явно, понятно новичкам Обучение, документация
    /\D/g любой нецифра Коротко, быстро Производительный код

    Расширенные случаи: цифры + допсимволы

    Иногда нужны не только цифры, но и тире или точки - для телефонов, дат. Изменяем регулярку: /[^0-9-]/g оставит цифры и дефис. Это решает задачу для строк вроде “123-45-67”.

    Пример из практики: обработка адресов или кодов. Строка “код-123-abc-456” станет “123-456”. Нюанс: флаг i игнорирует регистр, но для цифр не нужен.

    • С тире:
    const code = "код-123-abc-456";
    const clean = code.replace(/[^0-9-]/g, "");
    console.log(clean); // "123-456"
    
    • Для цифр, букв и пробелов: /[^0-9a-zа-яё\s]/gi.
    • Unicode-цифры: используйте /[^\p{N}]/gu в современных браузерах.
    Задача Регулярка Пример результата
    Только цифры /[^0-9]/g “123”
    Цифры + тире /[^0-9-]/g “123-456”
    Цифры + точка /[^0-9.]/g “123.45”

    Функция для повторного использования

    Создайте универсальную функцию, чтобы не писать код каждый раз. Она принимает строку и опциональный паттерн. Возвращает очищенный результат или ошибку.

    Функция упрощает работу в проектах: вызываете один раз для формы, API или валидации. Пример: проверка номера карты перед отправкой. Важно: всегда проверяйте входные данные на null.

    function extractDigits(str, pattern = /[^0-9]/g) {
      if (typeof str !== 'string') return '';
      return str.replace(pattern, '');
    }
    
    console.log(extractDigits("+7 (999) 123-45-67")); // "79991234567"
    
    • Добавьте проверку длины: if (result.length < 10) return null;.
    • Для массивов: array.map(extractDigits).

    Масштабирование на реальные проекты

    В больших приложениях комбинируйте с другими методами: trim(), parseInt(). Для React/Vue - используйте в onChange хендлерах. Решает проблемы с данными из внешних источников.

    Остается место для оптимизаций: кэшируйте RegExp как const digitsRegex = /[^0-9]/g;. Подумать стоит над обработкой отрицательных чисел или десятичных дробей в будущем.

    1 ответ Последний ответ
    0

    Категории

    • Главная
    • Новости
    • Фронтенд
    • Бекенд
    • Языки программирования

    Контакты

    • Сотрудничество
    • info@exlends.com
    • Наш чат
    • Наш ТГ канал

    © 2024 - 2026 ExLends, Inc. Все права защищены.

    Политика конфиденциальности
    • Войти

    • Нет учётной записи? Зарегистрироваться

    • Войдите или зарегистрируйтесь для поиска.
    • Первое сообщение
      Последнее сообщение
    0
    • Лента
    • Категории
    • Последние
    • Метки
    • Популярные
    • Пользователи
    • Группы