Une regex complète pour le numéro de téléphone de validation

Je vais essayer de mettre sur pied un vaste regex pour valider les numéros de téléphone. Idéalement, il serait en mesure de gérer des formats internationaux, mais il doit gérer NOUS les formats, y compris les suivantes:

  • 1-234-567-8901
  • 1-234-567-8901 x1234
  • 1-234-567-8901 ext1234
  • 1 (234) 567-8901
  • 1.234.567.8901
  • 1/234/567/8901
  • 12345678901

Je vais répondre avec ma tentative, mais j'espère que quelqu'un a quelque chose de mieux et/ou plus élégant.

  • Essayer de construire une regex complète à partir de zéro est généralement une mauvaise idée, sauf si vous avez une bonne dur raisons de sa mise en œuvre. Êtes-vous en contact direct avec SMSCs, ou d'autres telcom exploité matériel? Si c'est le cas, vous devriez être en mesure d'obtenir ce genre de validation des informations liées à eux.
  • BTW, vous devez indiquer dans quelle langue vous utilisez. Pas tous les regex moteurs ont la même syntaxe.
  • Semble que vous avez laissé de côté l'option de +1 au lieu de seulement 1, bien que la réponse couvre ce cas.
  • Ne sont pas tous les numéros de téléphone US exigent 555 en eux, en dehors de 911?
  • Au contraire, le 555 préfixe est réservée aux faux-les numéros de téléphone. Ces chiffres sont garantis de ne pas se connecter à un numéro de téléphone de sorte qu'ils sont souvent utilisés dans la télévision et les films pour s'assurer qu'un spectateur ne pas essayer d'appeler le numéro, et à la fin de harceler le pauvre innocent.
  • Tout ce qui était vrai il y a des décennies, il n'est plus vrai. Le 555 préfixe est toujours spécial, mais seulement une petite série de numéros sont garantis pour résilier sans connexion 555-0100 à 555-0199. Mais je suis sûr que Andrew était la blague de toute façon.
  • juste pour résumer, au Brésil, les téléphones portables sont comme +55 0XX 5555 1234. le +55 est le code du pays, 0XX zone code peut être juste XX, 5555 est à 4 ou 5 chiffres préfixe, 1234 numéro de téléphone à 4 chiffres. zone code entre les entre ()
  • code du pays préfixe peut également être "00" (et pas seulement "+")
  • Aux états-unis, "xxx-555-1212" le long-distance répertoire info nombre. "411" a obtenu vous de l'assistance-annuaire pour votre code local, mais si vous voulez de l'assistance-annuaire de code de la zone "612", vous auriez cadran "612-555-1212". "555" est un préfixe réservé, et seulement un peu spéciaux des chiffres comme "555-1212" pourrait jamais être attribuée, donc d'Hollywood pourrait choisir n'importe quel nombre d'autres qu'ils ont aimé de la "555" préfixe et d'être certain qu'il n'appartient pas à n'importe qui.
  • est un non-pays-code du pays préfixe. Les chiffres que vous composez pour un "+" varient d'un pays à l'autre; "00" est courante, mais elle n'est pas universelle.
  • Cette réponse a été ajouté à la Débordement de Pile dans l'Expression Régulière de la FAQ, en vertu de la "Common Tâches de Validation".
  • Voir aussi: technet.microsoft.com/en-us/library/cc728034(v=ws.10).aspx Si vous utilisez la numérotation automatique sur windows, ceci peut être important.
  • Twilio a numéro de téléphone gratuit validation: twilio.com/docs/lookup/tutorials/...