Regex para encontrar números en texto

Usa /-?(?:\d{1,3}(?:,\d{3})+|\d+)(?:\.\d+)?/g para encontrar todas las coincidencias en un texto. Cada ejemplo de abajo está probado contra el patrón, y puedes abrirlo en el Probador de Regex con los textos de muestra ya cargados.

Actualizado el

/-?(?:\d{1,3}(?:,\d{3})+|\d+)(?:\.\d+)?/g
Abrir en el Probador de Regex

Texto de muestra

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

5 coincidencias

3 4.50 -2.5 1,200 12345

Cómo funciona el patrón

ParteSignificado
-?Signo menos opcional
\d{1,3}(?:,\d{3})+Números con separadores de miles, como 1,200
|\d+O dígitos simples
(?:\.\d+)?Parte decimal opcional

Ejemplos de código

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];

Notas y limitaciones

Elimina las comas antes de convertir una coincidencia en número. Para números escritos como 1.200,50 (alemán y otros muchos idiomas), intercambia la coma y el punto en el patrón.

Preguntas frecuentes

¿Cuál es la regex para encontrar números en texto?
/-?(?:\d{1,3}(?:,\d{3})+|\d+)(?:\.\d+)?/g — encuentra todas las coincidencias en un texto. Consulta la tabla de arriba para ver qué hace cada parte.
¿Funciona en Python y PHP?
Sí, los ejemplos de código de arriba usan el mismo patrón con re en Python y las funciones preg en PHP.
¿Cómo pruebo esta regex?
Haz clic en «Abrir en el Probador de Regex»: el patrón, los flags y el texto de muestra se cargan automáticamente, y las coincidencias se resaltan mientras editas.