Skip to content

Instantly share code, notes, and snippets.

@boliveirasilva
Created October 14, 2015 16:11
Show Gist options
  • Star 45 You must be signed in to star a gist
  • Fork 16 You must be signed in to fork a gist
  • Save boliveirasilva/c927811ff4a7d43a0e0c to your computer and use it in GitHub Desktop.
Save boliveirasilva/c927811ff4a7d43a0e0c to your computer and use it in GitHub Desktop.
Regex para validação de telefones (celular ou fixo) no Brasil. A expressão leva em conta o formato internacional/nacional, com ou sem o DDD, de telefones fixos e celulares.
<?php
// A função abaixo demonstra o uso de uma expressão regular que identifica, de forma simples, telefones válidos no Brasil.
// Nenhum DDD iniciado por 0 é aceito, e nenhum número de telefone pode iniciar com 0 ou 1.
// Exemplos válidos: +55 (11) 98888-8888 / 9999-9999 / 21 98888-8888 / 5511988888888
function phoneValidate($phone)
{
$regex = '/^(?:(?:\+|00)?(55)\s?)?(?:\(?([1-9][0-9])\)?\s?)?(?:((?:9\d|[2-9])\d{3})\-?(\d{4}))$/';
if (preg_match($regex, $phone) == false) {
// O número não foi validado.
return false;
} else {
// Telefone válido.
return true;
}
}
// Se o parâmetro 'matches' for utilizado, o retorno será um array com 4 campos:
// - DDI
// - DDD
// - Primeira parte do número;
// - Segunda parte do número;
@ferco0
Copy link

ferco0 commented Aug 25, 2018

3 anos, tudo bem, mas

function validPhone($phone){
  return preg_math('/^(?:(?:\+|00)?(55)\s?)?(?:\(?([1-9][0-9])\)?\s?)?(?:((?:9\d|[2-9])\d{3})\-?(\d{4}))$/', $phone);
}

@jardelsantana
Copy link

jardelsantana commented Sep 18, 2018

3 anos, tudo bem, mas

function validPhone($phone){
  return preg_math('/^(?:(?:\+|00)?(55)\s?)?(?:\(?([1-9][0-9])\)?\s?)?(?:((?:9\d|[2-9])\d{3})\-?(\d{4}))$/', $phone);
}

function validPhone($phone){ return preg_match('/^(?:(?:\+|00)?(55)\s?)?(?:\(?([1-9][0-9])\)?\s?)?(?:((?:9\d|[2-9])\d{3})\-?(\d{4}))$/', $phone); }

@mvmendes
Copy link

mvmendes commented Dec 3, 2019

Javascript
$phone = '(11)99999-9999'; isValid = /^(?:(?:\+|00)?(55)\s?)?(?:\(?([1-9][0-9])\)?\s?)?(?:((?:9\d|[2-9])\d{3})\-?(\d{4}))$/.test($phone)

@c3l3si4n
Copy link

waldir bras

@MarceloFullStack
Copy link

Muito obrigado, funcionou pra mim

@maykbrito
Copy link

maykbrito commented May 20, 2021

Fala Bruno! Muito obrigado pela ajuda brother!

Aprendi esse carinha aqui (?:...) que eu não conhecia 😍

Testando nessa ferramenta (https://regex101.com/) e usando o PCRE2 (PHP >=7.3), tive que fazer essas alterações aqui para funcionar legal.

/^(?:(?:\+|00)?(55)\s?)?(?:(?:\(?[1-9][0-9]\)?)?\s?)?(?:((?:9\d|[2-9])\d{3})-?(\d{4}))$/

Obrigado!💜

@DanielAraldi
Copy link

Obrigado @maykbrito ajudou muito aqui!!! 🐱‍💻🚀

@giovannicandido
Copy link

Alguém sabe como deixar o DDD obrigatório?

@boliveirasilva
Copy link
Author

boliveirasilva commented Oct 4, 2021

Alguém sabe como deixar o DDD obrigatório?

@giovannicandido basta tirar o quantificador opcional (?) do grupo de DDD...
O resultado será: /^(?:(?:\+|00)?(55)\s?)?(?:\(?([1-9][0-9])\)?\s?)(?:((?:9\d|[2-9])\d{3})\-?(\d{4}))$/

Montei um exemplo aqui: Regex101

@giovannicandido
Copy link

^(?:(?:+|00)?(55)\s?)?(?:(?([1-9][0-9]))?\s?)(?:((?:9\d|[2-9])\d{3})-?(\d{4}))$

Obrigado @boliveirasilva tinha tentado sem sucesso mas com seu exemplo funcionou

@J3eff
Copy link

J3eff commented Dec 7, 2022

Obrigado @boliveirasilva, fez a boa <3

@LoyaltyAG
Copy link

Alguém sabe como deixar o DDD obrigatório?

@giovannicandido basta tirar o quantificador opcional (?) do grupo de DDD... O resultado será: /^(?:(?:\+|00)?(55)\s?)?(?:\(?([1-9][0-9])\)?\s?)(?:((?:9\d|[2-9])\d{3})\-?(\d{4}))$/

Montei um exemplo aqui: Regex101

No meu caso eu precisei permitir um espaço após o dígito 9 ( (xx) 9 xxxx-xxxx ). Usei seu exemplo adicionando apenas o espaço opcional e funcionou perfeitamente. Obrigado!

/^(?:(?:\+|00)?(55)\s?)?(?:\(?([1-9][0-9])\)?\s?)(?:((?:9\s?\d|[2-9])\d{3})\-?(\d{4}))$/```

@klimapsyteck
Copy link

Valeu mano funcionou aqui.

@LucasSaud
Copy link

Obrigado ! Ajudou imenso

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment