<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[JS удалить все кроме цифр: простые способы с примерами кода]]></title><description><![CDATA[<p dir="auto">Часто в JavaScript нужно очистить строку от всего лишнего - оставить только цифры. Это полезно для обработки пользовательского ввода, телефонов, цен или ID. Такие задачи возникают при валидации форм или парсинге данных.</p>
<p dir="auto">Метод работает быстро и надежно с помощью регулярных выражений. Вы получите чистые числа без букв, пробелов и символов. Разберем основные подходы шаг за шагом.</p>
<h2>Основной метод: replace с регуляркой</h2>
<p dir="auto">Метод <strong>string.replace()</strong> - это стандартный инструмент в JS для замены символов. Для удаления всего кроме цифр используем регулярное выражение <code>/[^0-9]/g</code>. Первый символ <code>^</code> внутри скобок значит ‘не’, <code>0-9</code> - диапазон цифр, <code>g</code> - глобальный поиск по всей строке.</p>
<p dir="auto">Возьмем пример: строка “Телефон: +7 (999) 123-45-67”. После обработки останется “79991234567”. Это идеально для номеров карт, дат или счетчиков. Такой подход универсален и работает в любом браузере.</p>
<ul>
<li><strong>Простой код</strong>:</li>
</ul>
<pre><code class="language-javascript">const str = "Телефон: +7 (999) 123-45-67";
const onlyDigits = str.replace(/[^0-9]/g, "");
console.log(onlyDigits); // "79991234567"
</code></pre>
<ul>
<li><em>Флаг <code>g</code> обязателен</em> - без него заменится только первый символ.</li>
<li>Работает с русскими буквами, эмодзи и спецсимволами - все уйдет.</li>
</ul>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Исходная строка</th>
<th>Результат</th>
<th>Длина до</th>
<th>Длина после</th>
</tr>
</thead>
<tbody>
<tr>
<td>“Цена 1 234 руб.”</td>
<td>“1234”</td>
<td>15</td>
<td>4</td>
</tr>
<tr>
<td>“+7-999-123-45-67”</td>
<td>“79991234567”</td>
<td>14</td>
<td>11</td>
</tr>
<tr>
<td>“abc123def”</td>
<td>“123”</td>
<td>7</td>
<td>3</td>
</tr>
</tbody>
</table>
<h2>Альтернатива: \D для нецифр</h2>
<p dir="auto">Регулярка <code>\D</code> - это сокращение для ‘любой нецифровой символ’. Она эквивалентна <code>/[^0-9]/g</code> и часто короче. Метод replace с <code>\D/g</code> удаляет буквы, пробелы, знаки препинания.</p>
<p dir="auto">Пример: “Абра23кадабра” превратится в “23”. Полезно в скриптах, где строка приходит из API или формы. <em>Обратите внимание</em>: <code>\D</code> не различает Unicode-цифры, но для латиницы и кириллицы работает идеально.</p>
<ul>
<li><strong>Код с \D</strong>:</li>
</ul>
<pre><code class="language-javascript">const text = "Абра23кадабра";
const nums = text.replace(/\D/g, "");
console.log(nums); // "23"
</code></pre>
<ul>
<li>Поддерживает многострочные строки с флагом <code>m</code>.</li>
<li>Быстрее на больших текстах, чем ручной цикл.</li>
</ul>
<p dir="auto">Таблица сравнения:</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Регулярка</th>
<th>Полное написание</th>
<th>Преимущества</th>
<th>Когда использовать</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>/[^0-9]/g</code></td>
<td>любой кроме 0-9</td>
<td>Явно, понятно новичкам</td>
<td>Обучение, документация</td>
</tr>
<tr>
<td><code>/\D/g</code></td>
<td>любой нецифра</td>
<td>Коротко, быстро</td>
<td>Производительный код</td>
</tr>
</tbody>
</table>
<h2>Расширенные случаи: цифры + допсимволы</h2>
<p dir="auto">Иногда нужны не только цифры, но и тире или точки - для телефонов, дат. Изменяем регулярку: <code>/[^0-9-]/g</code> оставит цифры и дефис. Это решает задачу для строк вроде “123-45-67”.</p>
<p dir="auto">Пример из практики: обработка адресов или кодов. Строка “код-123-abc-456” станет “123-456”. <em>Нюанс</em>: флаг <code>i</code> игнорирует регистр, но для цифр не нужен.</p>
<ul>
<li><strong>С тире</strong>:</li>
</ul>
<pre><code class="language-javascript">const code = "код-123-abc-456";
const clean = code.replace(/[^0-9-]/g, "");
console.log(clean); // "123-456"
</code></pre>
<ul>
<li>Для цифр, букв и пробелов: <code>/[^0-9a-zа-яё\s]/gi</code>.</li>
<li>Unicode-цифры: используйте <code>/[^\p{N}]/gu</code> в современных браузерах.</li>
</ul>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Задача</th>
<th>Регулярка</th>
<th>Пример результата</th>
</tr>
</thead>
<tbody>
<tr>
<td>Только цифры</td>
<td><code>/[^0-9]/g</code></td>
<td>“123”</td>
</tr>
<tr>
<td>Цифры + тире</td>
<td><code>/[^0-9-]/g</code></td>
<td>“123-456”</td>
</tr>
<tr>
<td>Цифры + точка</td>
<td><code>/[^0-9.]/g</code></td>
<td>“123.45”</td>
</tr>
</tbody>
</table>
<h2>Функция для повторного использования</h2>
<p dir="auto">Создайте универсальную функцию, чтобы не писать код каждый раз. Она принимает строку и опциональный паттерн. Возвращает очищенный результат или ошибку.</p>
<p dir="auto">Функция упрощает работу в проектах: вызываете один раз для формы, API или валидации. Пример: проверка номера карты перед отправкой. <em>Важно</em>: всегда проверяйте входные данные на null.</p>
<pre><code class="language-javascript">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"
</code></pre>
<ul>
<li>Добавьте проверку длины: <code>if (result.length &lt; 10) return null;</code>.</li>
<li>Для массивов: <code>array.map(extractDigits)</code>.</li>
</ul>
<h2>Масштабирование на реальные проекты</h2>
<p dir="auto">В больших приложениях комбинируйте с другими методами: trim(), parseInt(). Для React/Vue - используйте в onChange хендлерах. Решает проблемы с данными из внешних источников.</p>
<p dir="auto">Остается место для оптимизаций: кэшируйте RegExp как <code>const digitsRegex = /[^0-9]/g;</code>. Подумать стоит над обработкой отрицательных чисел или десятичных дробей в будущем.</p>
]]></description><link>https://forum.exlends.ru/topic/858/js-udalit-vse-krome-cifr-prostye-sposoby-s-primerami-koda</link><generator>RSS for Node</generator><lastBuildDate>Sat, 17 Oct 2026 03:45:32 GMT</lastBuildDate><atom:link href="https://forum.exlends.ru/topic/858.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 28 Feb 2026 15:36:56 GMT</pubDate><ttl>60</ttl></channel></rss>