Created
October 14, 2015 16:11
-
-
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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; | |
Muito obrigado, amigo. Ajudou muito!
Fiz uma pequena adaptação para, se for usado o '(' inicial ou final no DDD, obrigar o outro também. Ficou assim:
/^(?:(?:\+|00)?(55)\s?)?(?:(?:\((\d{2})\)|\d{2})\s?)?(?:((?:9\d|[2-9])\d{3})\-?(\d{4}))$/
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Muito obrigado. Adaptei para uma regra (Rules) de validação no Laravel:
0; return preg_match('/^(?:(?:\+|00)?(55)\s?)?(?:\(?([1-9][0-9])\)?\s?)?(?:((?:9\d|[2-9])\d{3})\-?(\d{4}))$/', $value); } public function message() { return 'O campo :attribute não é um telefone com DDD válido.'; } }