Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Philippe Dias

Expressão Regular para validar Telefone

Recommended Posts

Galera,

 

Não sei se estou postando no lugar certo, mas tenho que fazer uma expressão regular POSIX que case com telefones. os telefones tem que iniciarem com DDD.

 

Bom, como o ddd é obrigatorio entao comecei por ele. ha varios modos, como:

(37)

(037)

037

37

 

Para os casos que nao tenha parenteses, depois do ddd, pode ser seguido de um espaco em branco, ponto ou hifen.

 

37.XXXXXXXX

37-XXXXXXXX

37 XXXXXXXX

37XXXXXXXX

 

037.XXXXXXXX

037-XXXXXXXX

037 XXXXXXXX

037XXXXXXXX

 

Para os que contem parenteses, pode ser seguido de espaco

 

(37) XXXXXXXX

(37)XXXXXXXX

(037) XXXXXXXX

(037)XXXXXXXX

 

A dificuldade que tenho esta entre saber quando validar o ddd com o sem parentes.

Fiz uma regex para o primeiro caso:

(([0-9]?[0-9][0-9])[ -.]?)

E outra para o segundo:

(\([0-9]?[0-9][0-9]\)[ ]?)

 

Mas quando junto as duas com um OU, ha varios telefones incorretos aceitos. alguem sabe alguma forma de junta-las?

ou entao outro modo de faze-las?

 

Uma outra obs é que pode ocorrer de que na mesma linha ter mais de um telefone, por ex:

37 XXXX-XXXX / (37) XXXX.XXXX

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem por jquery

<script>

jQuery(function(){

jQuery("#telefone").mask("(99) 9999-9999");

});

</script>

<label>Telefone </label><input type="text" name="telefone" id="telefone" />

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem por jquery

<script>

jQuery(function(){

jQuery("#telefone").mask("(99) 9999-9999");

});

</script>

<label>Telefone </label><input type="text" name="telefone" id="telefone" />

 

Eu tenho que validar pela através da expressão mesmo, pq eu leio um arquivo contendo varios numeros de telefones.

 

eu to tentando aqui, ja cheguei nisso:

 

^\(\d{2,3}\) ?\d{4}( |-|.)?\d{4}|^\d{2,3}( |-|.)?\d{4}( |-|.)?\d{4}

 

tenho que corrigir algumas coisa ainda =S

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

 

Fiz rapidamente e não tive muito tempo para testar, mas veja se isso te ajuda:

(\()?(10)|([1-9]){2}\)?((-|\s)?)([2-9][0-9]{3}((-|\s)?)[0-9]{4,5})

 

  • (\()?(10)|([1-9]){2}\)?: Define o DDD, podendo conter parêntesis com, no mínimo, 2 caracteres e no máximo 3;
  • ((-|\s)?): Separa o DDD do número, podendo conter espaço (ou não) e hífen;
  • ((9)?[2-9][0-9]{3}((-|\s)?)[0-9]{4}): Aqui é o número de telefone. Permite o uso do número nove ou não (novos números de celulares São Paulo). O segundo número (podendo, na maioria dos casos, ser o prmieiro) é válido entre 2 a 9. Três números num conjunto de 0 a 9. Separação com espaço, sem espaço ou hífen. Quatro números num conjunto de 0 a 9.

Conseguiu entender a expressão?

 

Espero que te ajude. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quase lá (eu acho):

 

(([0-9]{2,3})|\([0-9]{2,3}\))[-. ]*(([0-9]{4})[-. ]*([0-9]{4}))

 

mas aceitando numeros como:

9(104-5391 8187)6017

3(028.3212 - 3018).3207

9104-5391 81876017

3028.3212 - 3018.3207

 

Olá!

 

Fiz rapidamente e não tive muito tempo para testar, mas veja se isso te ajuda:

(\()?(10)|([1-9]){2}\)?((-|\s)?)((9)?[2-9][0-9]{3}((-|\s)?)[0-9]{4,5})

 

  • (\()?(10)|([1-9]){2}\)?: Define o DDD, podendo conter parêntesis com, no mínimo, 2 caracteres e no máximo 3;
  • ((-|\s)?): Separa o DDD do número, podendo conter espaço (ou não) e hífen;
  • ((9)?[2-9][0-9]{3}((-|\s)?)[0-9]{4}): Aqui é o número de telefone. Permite o uso do número nove ou não (novos números de celulares São Paulo). O segundo número (podendo, na maioria dos casos, ser o prmieiro) é válido entre 2 a 9. Três números num conjunto de 0 a 9. Separação com espaço, sem espaço ou hífen. Quatro números num conjunto de 0 a 9.

Conseguiu entender a expressão?

 

Espero que te ajude. :thumbsup:/>/>

 

Entendi Guilherme, vou testar aqui. valeu por ajudar!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

/^(\(0?\d{2}\)\s?|0?\d{2}[\s.-]?)\d{4,5}[\s.-]?\d{4}$/

 

Mas eu acho besteira se preocupar com tudo isso... Deixa o cara digitar do jeito que quiser, no final, remove tudo o que não for dígito, valida só o número de dígitos:

$onlyNumbers = preg_replace('/\D/', '', $phone);

 

Ou usa uma máscara, como sugerido...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.