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

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

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

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

    Такие приёмы экономят время и упрощают валидацию данных. Мы разберём базовые шаблоны, примеры и нюансы для обеих платформ. В итоге вы сможете быстро применять их в проектах без лишних библиотек.

    Регулярка для JavaScript: простая очистка строки

    В JavaScript метод replace() с регулярным выражением удаляет все символы кроме цифр. Основной шаблон — /[^0-9]/g, где ^ внутри скобок значит “не”, а 0-9 — диапазон цифр. Флаг g обеспечивает замену всех вхождений, без него сработает только первое.

    Возьмём номер телефона: '+7 (910) 343-23-54'. После replace(/[^0-9]/g, '') получится '79103432354'. Это удобно для форм, где пользователь вводит лишние символы. Такой подход работает везде — в браузере или Node.js, без дополнительных настроек.

    • Базовый шаблон: /[^0-9]/g — удаляет всё кроме цифр 0–9.
    • С флагом i: /[^0-9]/gi — игнорирует регистр, но для цифр не актуально.
    • Альтернатива с \d: /[^\d]/g — то же самое, \d значит цифру.
    Исходная строка Регулярка Результат
    ‘+7 (910) 343-23-54’ /[^0-9]/g ‘79103432354’
    ‘A1B2C3’ /[^\d]/g ‘123’
    ‘Цена: 1 234 руб.’ /[^0-9]/g ‘1234’

    Нюанс: Если нужны только русские цифры или Unicode, используйте /[^\p{N}]/gu в современных движках.

    Регулярка для PHP: preg_replace в действии

    В PHP функция preg_replace() аналогично чистит строки. Шаблон /[^0-9]/ без флага g, так как функция по умолчанию заменяет все вхождения. Разделители — слеши /, внутри [^0-9] — всё кроме цифр, заменяем на пустую строку ''.

    Пример: $str = "A()bs23 + 456 Проверка"; echo preg_replace('/[^0-9]/', '', $str); выдаст 23456. Это идеально для парсинга пользовательских данных или баз. Функция работает с PCRE, поддерживает Unicode с модификатором u.

    • Стандартный вызов: preg_replace('/[^0-9]/', '', $str) — базовая очистка.
    • С диапазоном: preg_replace('/[^0-7]/', '', $str) — оставит только 0–7.
    • Проверка на наличие: preg_match('/\d/', $str) — есть ли хоть одна цифра.
    Пример кода Вход Выход
    preg_replace('/[^0-9]/', '', $str) ‘от 1200 руб.’ ‘1200’
    preg_replace('/[^\d]/', '', $str1) ‘1 200 р + торг’ ‘1200’
    preg_replace('/[^0-9]/u', '', $str) ‘Цена 1234’ ‘1234’ (с u для Unicode)

    Важно: Всегда экранируйте слеши, если они в строке, и проверяйте результат на пустоту.

    Сравнение подходов JS и PHP

    Оба языка используют похожий синтаксис PCRE, но с разными функциями. В JS — это string.replace(regexp, ''), глобальный поиск через g. В PHP — preg_replace(pattern, '', $str), глобальность по умолчанию. Выбор зависит от контекста: фронтенд или бэкенд.

    Для униформности можно вынести шаблон в константу. В JS флаги ставятся в конце (/pattern/g), в PHP — после разделителя (/pattern/g). Оба поддерживают \d как shorthand для цифр, что короче [0-9].

    Аспект JavaScript PHP
    Функция str.replace(/[^0-9]/g, '') preg_replace('/[^0-9]/', '', $str)
    Глобальность Флаг g обязателен По умолчанию
    Unicode /[^\p{N}]/gu /[^0-9]/u
    Проверка str.match(/\d/) preg_match('/\d/', $str)
    • Когда JS: Маски ввода, валидация форм на клиенте.
    • Когда PHP: Обработка POST-данных, парсинг логов.
    • Кросс-платформа: Шаблон /[^0-9]/g работает идентично.

    Производительность: Для длинных строк JS быстрее, PHP — с кэшированием шаблона через preg_replace_callback.

    Вариации и продвинутые шаблоны

    Иногда нужны не все цифры, а только в диапазоне или с точками. Для версии вроде ‘1.2.3’ используйте /[^0-9\.]/g. Это оставит цифры и точки. Ещё вариант — /\d+/g для извлечения групп цифр в массив.

    В реальных задачах встречаются пробелы или дефисы в номерах: ‘1 234-56’. Шаблон /[^0-9\s-]/g уберёт остальное. Для телефонов популярно нормализовать до E.164 формата. Тестируйте на edge-кейсах вроде пустой строки или только букв.

    • /[^0-9\.]/g — цифры + точки для версий.
    • /\d{3}/g — группы по 3 цифры.
    • /\d+/g.match(str) — массив всех чисел.
    Сценарий Шаблон JS Шаблон PHP
    Только цифры /[^0-9]/g /[^0-9]/
    Цифры + точки /[^0-9\.]/g /[^0-9\.]/
    Только 0-5 /[^0-5]/g /[^0-5]/

    Совет: Для сложных случаев комбинируйте с split() или filter().

    Шаблоны для мобильной валидации и API

    В мобильных apps или API часто чистят JSON-ответы. В React Native или Flutter (с JS-bridging) те же регулярки. Для API — валидация на сервере PHP перед сохранением. Это предотвращает инъекции и ошибки БД.

    Представьте ввод: ‘8909-123-45-67’. После очистки — чистый номер для базы. Тестируйте на кириллице: ‘восемь910’ с /[^0-9]/u. Оба языка справляются с многобайтовыми строками при правильных флагах.

    Тонкости с отрицанием и границами

    Ключ — отрицание [^...], оно исключает символы из класса. Добавьте ^ и $ для полной строки: /^[0-9]+$/ — проверка, что строка состоит только из цифр. Без них — просто очистка.

    Это полезно для валидации: if (str.match(/^[0-9]+$/)) { ... }. В PHP аналогично preg_match('/^[0-9]+$/', $str). Разница в экранировании: JS не требует для слешей в строке.

    Практика на грани: числа с разделителями

    Когда цифры с пробелами или запятыми, как ‘1,234.56’. Шаблон /[^0-9,\.]/g оставит их. Потом парсите parseFloat(result.replace(',', '')). Для валют — комбинируйте регулярки с number_format() в PHP.

    Вход Шаблон Результат
    ‘1,234 руб.’ /[^0-9]/g ‘1234’
    ‘1.234,56 €’ /[^0-9\.]/g ‘1.23456’

    Вывод: Экспериментируйте с RegExp.test() для быстрой проверки.

    Масштабирование: от простого к сложному

    Начните с базовой /[^0-9]/, добавляйте символы в класс. Для телефонов — /[^0-9+]/g. Тестируйте в консоли браузера или php онлайн. Это база, на которой строится сложный парсинг.

    Ограничения: регулярки не для вложенных структур, там лучше парсеры. Но для строк — идеал скорости и простоты. Подумать стоит над обработкой очень длинных строк или интеграцией в фреймворки вроде Laravel/Vue.

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

    Категории

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

    Контакты

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

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

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

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

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