-
-
Save boliveirasilva/c927811ff4a7d43a0e0c to your computer and use it in GitHub Desktop.
<?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; | |
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
^(?:(?:+|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
Obrigado @boliveirasilva, fez a boa <3
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}))$/```
Valeu mano funcionou aqui.
Obrigado ! Ajudou imenso
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.'; } }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}))$/
Alguém sabe como deixar o DDD obrigatório?