# Testador de regex online (JavaScript)

> O testador de regex aplica uma expressão regular a um texto e destaca cada trecho que casa, com a posição e o conteúdo de cada grupo de captura. Ele usa o motor de expressões regulares do JavaScript, o mesmo do seu navegador e do Node.js, e roda localmente, sem enviar o texto a nenhum servidor.

- Endereço oficial: https://pradev.com.br/regex-tester
- Categoria: JSON, dados e formatadores
- Tipo: Utilitário
- Atualizado em: 2026-09-30
- Autor: Leonardo Gaertner (https://pradev.com.br/sobre)
- Preço: grátis, sem cadastro. O processamento acontece no navegador de quem usa.

## Como usar

1. Digite a expressão no campo entre as barras, sem as barras.
2. Marque as flags que precisar, como g para achar todos os casamentos e i para ignorar maiúsculas.
3. Cole o texto de teste e veja o destaque e a lista de casamentos com seus grupos.

## Como funciona

A ferramenta cria a expressão com o construtor RegExp do JavaScript e percorre o texto coletando cada casamento, com a posição inicial e os grupos de captura, inclusive os nomeados, escritos como (?<nome>...).

As flags mudam o comportamento: g procura todos os casamentos (sem ela, só o primeiro), i ignora maiúsculas e minúsculas, m faz ^ e $ valerem em cada linha, s faz o ponto pegar também quebras de linha e u ativa o modo Unicode.

A sintaxe é a do JavaScript. Ela é parecida com a de Python, PHP e Java, mas não idêntica: por exemplo, JavaScript não tem grupos atômicos nem quantificadores possessivos. Teste na linguagem em que a expressão vai rodar quando o comportamento for crítico.

### Expressões que mais se usam

```text
\d+  um ou mais dígitos
\d{3}\.\d{3}\.\d{3}-\d{2}  um CPF com pontuação
^[\w.+-]+@[\w-]+\.[\w.-]+$  um e-mail simples
(?<ano>\d{4})-(?<mes>\d{2})  ano e mês, com grupos nomeados
```

## Em código

Expressões prontas para CEP, telefone com DDD e e-mail. Em Python e PHP, o cifrão aceita uma quebra de linha no fim: por isso os exemplos usam fullmatch e o modificador D.

```javascript
// CEP: 5 dígitos, hífen opcional e 3 dígitos
const reCEP = /^\d{5}-?\d{3}$/;
// Telefone com DDD: celular (9 + 8 dígitos) ou fixo (começa de 2 a 5)
const reTelefone = /^\(?[1-9]{2}\)? ?(?:9\d{4}|[2-5]\d{3})-?\d{4}$/;
// E-mail: só confere o formato geral. A prova real é enviar um e-mail de confirmação.
const reEmail = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;

const cepValido = (v) => reCEP.test(v);
const telefoneValido = (v) => reTelefone.test(v);
const emailValido = (v) => reEmail.test(v);
```

_JavaScript_

```python
import re

# re.ASCII: sem ele, \d também aceita dígitos de outros alfabetos, como ٣
RE_CEP = re.compile(r"\d{5}-?\d{3}", re.ASCII)
RE_TELEFONE = re.compile(r"\(?[1-9]{2}\)? ?(?:9\d{4}|[2-5]\d{3})-?\d{4}", re.ASCII)
RE_EMAIL = re.compile(r"[^\s@]+@[^\s@]+\.[^\s@]+")


# fullmatch exige que o texto inteiro combine (o $ aceitaria uma quebra de linha no fim)
def cep_valido(v: str) -> bool:
    return RE_CEP.fullmatch(v) is not None


def telefone_valido(v: str) -> bool:
    return RE_TELEFONE.fullmatch(v) is not None


def email_valido(v: str) -> bool:
    return RE_EMAIL.fullmatch(v) is not None
```

_Python_

```php
<?php
// O modificador D faz o $ recusar uma quebra de linha no fim do texto
const RE_CEP = '/^\d{5}-?\d{3}$/D';
const RE_TELEFONE = '/^\(?[1-9]{2}\)? ?(?:9\d{4}|[2-5]\d{3})-?\d{4}$/D';
const RE_EMAIL = '/^[^\s@]+@[^\s@]+\.[^\s@]+$/D';

function cepValido(string $v): bool
{
    return preg_match(RE_CEP, $v) === 1;
}

function telefoneValido(string $v): bool
{
    return preg_match(RE_TELEFONE, $v) === 1;
}

function emailValido(string $v): bool
{
    return preg_match(RE_EMAIL, $v) === 1;
}
```

_PHP_

## Perguntas frequentes

### Por que a regex só encontra o primeiro resultado?

Porque falta a flag g (global). Sem ela, o JavaScript para no primeiro casamento. Marque a opção g para listar todos.

### A regex funciona igual em Python, PHP ou Java?

A base é a mesma, mas há diferenças. Os grupos nomeados, por exemplo, são escritos como (?<nome>...) em JavaScript e (?P<nome>...) em Python. Para expressões complexas, confirme na linguagem de destino.

### Preciso escapar a barra invertida no meu código?

Em uma string de código, sim: \d vira "\\d" em JavaScript, Java e outras linguagens. Já em um literal /\d/ de JavaScript e neste testador, você escreve só \d.

### Por que a aba trava com algumas expressões?

Expressões com repetições aninhadas, como (a+)+, podem exigir um número enorme de tentativas em certos textos, o chamado backtracking catastrófico. Simplifique o padrão ou reduza o texto de teste.

## Fontes

- [MDN: expressões regulares em JavaScript](https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Guide/Regular_expressions)

## Guias

- [Regex para CEP, telefone e e-mail no Brasil](https://pradev.com.br/guias/regex-cep-telefone-email): Expressões regulares para validar CEP, telefone com DDD e e-mail, com os erros que deixam passar valores inválidos em JavaScript, Python e PHP.

## Ferramentas relacionadas

- [Validador JSON](https://pradev.com.br/validador-json): Valide JSON online e veja a linha e a coluna do erro, o tipo e a profundidade. Grátis, e o que você cola não sai do navegador.
- [Codificar e Decodificar URL](https://pradev.com.br/url-encode-decode): Codifique e decodifique URL (percent-encoding) online: trechos de parâmetros ou URL completa, com acentos. Grátis, direto no navegador.
- [Gerador de CPF](https://pradev.com.br/gerador-de-cpf): Gere CPF válido para testar sistemas e formulários. Grátis, com ou sem pontuação, direto no navegador. Só para testes de software.
- [Formatador JSON](https://pradev.com.br/formatador-json): Formate, indente, minifique e valide JSON online. Mostra a linha e a coluna do erro. Grátis, e o que você cola não sai do navegador.
- [Conversor de Timestamp Unix](https://pradev.com.br/timestamp-converter): Converta timestamp Unix (segundos ou milissegundos) em data e hora, e data em timestamp. Grátis, com o seu fuso horário e em UTC.
- [Comparador JSON](https://pradev.com.br/comparador-json): Compare dois JSON online e veja o caminho de cada chave adicionada, removida ou alterada. A ordem das chaves não conta. Grátis.
