Designing a regular expression to find phone numbers is some string are not trivial. The rules of what is a valid number are strange, and the phone itself can be present with any number of artifacts, like spaces, dashes and parentheses.

This last morning I have been trying to design a good regular expression but I’m still a bit far. So far I managed to do:
(\(?[\s]*(00|\+){1,1}[\d]{1,4}[\s]*\)?)?([\s]*|-)(-|[\s])?(\(?[\d]\)?([\s]*|\.|-)){7,15}

But it sill misses things like: +351 (21) 1111111

3 Respostas a “Telephone Regular Expressions”
  1. «Some people, when confronted with a problem, think “I know, I’ll use regular expressions.” Now they have two problems.»

    Os números de telefone são um bom exemplo de um problema onde as expressões regulares não são a melhor solução.

    É capaz de ser mais fácil de usar uma expressão regular para encontrar sequências de digitos que _podem_ ser números de telefone, e depois usar um algoritmo mais complicado (potencialmente com expressões regulares mais simples lá dentro) para verificar se realmente se trata de um número de telefone.

  2. Pedro Pais diz:

    Eu resolvia isso da seguinte forma:
    1 – Removia tudo da string excepto os números
    2 – Escrevia uma expressão regular para aceitar 4 formatos distintos: +351XXX.., 00351XXX, 21XXXX

    E pronto!

  3. Pedro Pais: Esqueci de dizer que eu precisava de saber onde na string original se encontrava o número.

    Carlos: Essa é uma boa alternativa. A questão aqui é que neste caso eu não estava a fazer de raiz, mas apenas a melhorar problemas em algo que já existia. Talvez vá re-fazer isto.

  4.  
Deixe uma resposta

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">