Regex para número decimal

Use /^-?\d+(?:\.\d+)?$/ para verificar se a string inteira é um número decimal válido. Cada exemplo abaixo foi testado com o padrão, e você pode abri-lo no Testador de Regex com os exemplos já carregados.

Atualizado em

/^-?\d+(?:\.\d+)?$/
Abrir no Testador de Regex
EntradaResultado
42✓ Corresponde
-3.14✓ Corresponde
0.5✓ Corresponde
.5✗ Não corresponde
1.✗ Não corresponde
1,000✗ Não corresponde
abc✗ Não corresponde
+1✗ Não corresponde

Como o padrão funciona

ParteSignificado
-?Sinal de menos opcional
\d+Parte inteira
(?:\.\d+)?Ponto e dígitos decimais opcionais

Exemplos de código

JavaScript

const re = /^-?\d+(?:\.\d+)?$/;
re.test(value); // true or false

Python

import re

bool(re.fullmatch(r'-?\d+(?:\.\d+)?', value))

PHP

preg_match('/^-?\d+(?:\.\d+)?$/', $value) === 1;

Observações e limitações

Para permitir .5, altere \d+ para \d* na parte inteira (e certifique-se de que a string não esteja vazia).

Perguntas frequentes

Qual é a regex para número decimal?
/^-?\d+(?:\.\d+)?$/ — ela corresponde à string inteira. Veja a tabela acima para entender o que cada parte faz.
Quais exemplos correspondem?
Entre os exemplos testados, estes correspondem: 42, -3.14, 0.5. Os outros não.
Como testo essa regex?
Clique em “Abrir no Testador de Regex” — o padrão, as flags e o texto de exemplo são carregados automaticamente, e as correspondências são destacadas conforme você edita.