-
-
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; | |
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); }
Javascript
$phone = '(11)99999-9999'; isValid = /^(?:(?:\+|00)?(55)\s?)?(?:\(?([1-9][0-9])\)?\s?)?(?:((?:9\d|[2-9])\d{3})\-?(\d{4}))$/.test($phone)
waldir bras
Muito obrigado, funcionou pra mim
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!💜
Obrigado @maykbrito ajudou muito aqui!!! 🐱💻🚀
Alguém sabe como deixar o DDD obrigatório?
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}))$/
3 anos, tudo bem, mas