Регулярное выражение для поиска чисел в тексте

Используйте /-?(?:\d{1,3}(?:,\d{3})+|\d+)(?:\.\d+)?/g, чтобы найти все совпадения в тексте. Каждый пример ниже проверен на этом шаблоне, и его можно открыть в Regex Tester с уже загруженными образцами.

Обновлено

/-?(?:\d{1,3}(?:,\d{3})+|\d+)(?:\.\d+)?/g
Открыть в Regex Tester

Образец текста

Order 3 items at $4.50 each, save -2.5% on 1,200 units — 12345 in stock.

5 совпадений

3 4.50 -2.5 1,200 12345

Как работает шаблон

ЧастьЗначение
-?Необязательный знак минус
\d{1,3}(?:,\d{3})+Числа с разделителями тысяч, например 1,200
|\d+Или просто цифры
(?:\.\d+)?Необязательная дробная часть

Примеры кода

JavaScript

const matches = text.match(/-?(?:\d{1,3}(?:,\d{3})+|\d+)(?:\.\d+)?/g) ?? [];

Python

import re

matches = re.findall(r'-?(?:\d{1,3}(?:,\d{3})+|\d+)(?:\.\d+)?', text)

PHP

preg_match_all('/-?(?:\d{1,3}(?:,\d{3})+|\d+)(?:\.\d+)?/', $text, $m);
$matches = $m[0];

Примечания и ограничения

Удалите запятые перед преобразованием совпадения в число. Для чисел, записанных как 1.200,50 (немецкая и многие другие локали), поменяйте местами запятую и точку в шаблоне.

Часто задаваемые вопросы

Какое регулярное выражение находит числа в тексте?
/-?(?:\d{1,3}(?:,\d{3})+|\d+)(?:\.\d+)?/g — находит все совпадения в тексте. Что делает каждая часть, см. таблицу выше.
Работает ли это в Python и PHP?
Да — примеры кода выше используют тот же шаблон: с re в Python и с функциями preg в PHP.
Как протестировать это регулярное выражение?
Нажмите «Открыть в Regex Tester» — шаблон, флаги и образец текста загрузятся автоматически, а совпадения будут подсвечиваться по мере редактирования.