Quelle expression régulière match international valide les numéros de téléphone?
J'ai besoin pour déterminer si un numéro de téléphone valide avant de tenter de le composer. Le téléphone peut aller n'importe où dans le monde.
Quelle expression régulière match international valide les numéros de téléphone?
- Comment tout regex gérer les erreurs comme des numéros de service? Juste essayer d'appeler et handle non valide-numéro comme vous le feriez d'autres erreurs.
- Pendant que vous êtes correct que la regex ne peut pas le déterminer, chaque sortant tentative consomme du temps et des ressources. De faire un rapide test de cohérence sur le nombre assure évidemment faux appel de ne pas bloquer un précieux canal.
- LOL @ paxdiablo.... Je suppose que le 1-800-APPEL-de l'AIDE à passer votre RegExp test...lol
- Quelque chose qui n'est pas clair dans cette question est si les numéros doivent être valides si elles sont appelées par les états-unis ou de n'importe quel pays dans le monde, parce que la plupart des solutions ci-dessous n'est pas de valider certains numéros valides (comme 0030 210 12312312 - valide grecque nombre appelé à partir de n'importe quel pays de l'UE)
- la question, dit "numéro de téléphone international" à la fois le titre et le corps. Un numéro de téléphone international est l'un avec une
+
où le code de sortie doit être. Que le code de sortie est en effet00
dans tous les pays de l'UE (et la majorité des pays d'ailleurs), mais qui fait toujours l'exemple que vous donnez une zone spécifique de nombre (bien qu'il fonctionne dans beaucoup de domaines spécifiques), non pas international. - Je suis d'accord sur un point, mais d'un autre côté, à partir du UX point de vue, vous ne pensez pas que si un utilisateur entre un 00XX...un nombre X, le test doit se passer? Il y a des cas où des utilisateurs (personnes âgées) ne sait même pas ce que le + est et comment taper sur un numérique/clavier du téléphone. Aussi, je pourrais encore affirmer que 00XXX est un certificat international de nombre (c'est à dire dans un contexte de l'utilisateur) où, au lieu des +, le code de sortie a été utilisé.
- à partir d'un point de vue de l'INTERFACE utilisateur, si vous avez besoin d'un numéro de téléphone international et que l'utilisateur entre un non-numéro de téléphone international à partir de laquelle vous pouvez déduire le numéro de téléphone international, alors vous devez les accepter le nombre, ils sont entrés, et d'en faire le numéro de téléphone international. De cette façon, vous êtes à la réduction du nombre d'erreurs par fiable transformer une forme d'entrée dans un autre, plutôt que d'augmenter les erreurs en acceptant des données non valides. Et comment quelque chose peut être international "dans un contexte de l'utilisateur"? À l'échelle internationale signifie qu'il fonctionne quel que soit le contexte géographique ipso facto.
Vous devez vous connecter pour publier un commentaire.
Est le format correct pour l'appariement d'un générique de numéro de téléphone international. J'ai remplacé le territoire des usa ligne centrée sur le code d'accès international 011 avec le standard code d'accès international identificateur de ' + ' et le rendre obligatoire. J'ai aussi changé le minimum du nombre d'au moins un chiffre.
Notez que si vous entrez des numéros dans ce format sur votre téléphone mobile, carnet d'adresses, vous pouvez appeler avec succès n'importe quel numéro dans votre carnet d'adresses, peu importe où vous voyagez. Pour les lignes terrestres, les remplacer le plus avec le code d'accès international pour le pays que vous appelez à partir d'.
Noter que ceci NE prend PAS en compte le numéro national plan des règles plus précisément, il permet de zéros et de uns, dans des endroits national nombre de plans de permettre et permet également le nombre des longueurs de plus que le numéro national plan pour certains pays (par exemple, les états-unis).
^(\+|00){0,2}(9[976]\d|8[987530]\d|6[987]\d|5[90]\d|42\d|3[875]\d|2[98654321]\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)\d{1,14}$
^\+((?:9[679]|8[035789]|6[789]|5[90]|42|3[578]|2[1-689])|9[0-58]|8[1246]|6[0-6]|5[1-8]|4[013-9]|3[0-469]|2[70]|7|1)(?:\W*\d){0,13}\d$
Tous les codes de pays sont définis par l'UIT. La regex suivante est basée sur de l'UIT-T E. 164 et Annexe au Bulletin d'exploitation de l'UIT N ° 930 – 15.IV.2009. Il contient tous les codes de pays et codes réservés pour une utilisation future. Alors qu'il pourrait être raccourci un peu, j'ai décidé d'inclure chaque code de façon indépendante.
C'est pour les appels en provenance des états-unis. Pour les autres pays, remplacer le code d'accès international (l'011 au début de la regex) avec tout ce qui est approprié pour le pays du plan de composition.
Notez également que l'UIT E. 164 définit la longueur maximale d'un plein numéro de téléphone international à 15 chiffres. Cela signifie un nombre à trois chiffres par pays code à 12 chiffres supplémentaires, et un 1 digit code de pays pourrait contenir jusqu'à 14 chiffres. D'où la
à la fin de la regex.
Plus important encore, cette expression ne signifie pas la validité du numéro d' - chaque pays définit ses propres plan de numérotation interne. Cela garantit que le code de pays est valide.
{0,14}
? Est011<country code>
vraiment un nombre valide? Certes, la plupart des pays ont assez de lignes téléphoniques pour justifier d'un chiffre ou deux...C'est une optimisation supplémentaire.
(i) permet de certificat international de préfixes
(ii) suivi de 9 ou 10 chiffres, avec n'importe quel type ou de la passation de délimiteurs (sauf entre les deux derniers chiffres)
Ce sera un match:
+1-234-567-8901
+61-234-567-89-01
+46-234 5678901
+1 (234) 56 89 901
+1 (234) 56-89 901
+46.234.567.8901
+1/234/567/8901
Vous pouvez utiliser la bibliothèque libphonenumber de Google.
J'utilise celui-ci:
Avantages: reconnaît + ou 011 débuts, lui permet d'être aussi longtemps que nécessaire, et gère de nombreux extension des conventions. (#,x,ext,extension)
Cela fonctionnera pour les numéros internationaux;
C#:
JS:
Voici un "optimisé" de la version de votre regex:
Vous pouvez remplacer le
\d
s avec[0-9]
si votre syntaxe regex ne prend pas en charge\d
.Pour iOS SWIFT j'ai trouvé ce utile,
Modifié @Eric expression régulière - ajout d'une liste de tous les codes de pays (obtenu à partir de xxxdepy @ Github.
J'espère que cela vous sera utile:
Il y a évidemment une multitude de façons de le faire, comme en témoignent toutes les différentes réponses apportées jusqu'à présent, mais je vais jeter mon 0,02 $en vaut la peine ici et de fournir à l'expression régulière ci-dessous, qui est un peu plus laconique, que presque tous les ci-dessus, mais plus complet que la plupart des ainsi. Il a aussi le côté sympa à effet de laisser le code du pays dans $1 et le numéro local de $2.
^\+(?=\d{5,15}$)(1/2[078]|3[0-469]|4[013-9]|5[1-8]|6[0-6]|7|8[1-469]|9[0-58]|[2-9]..)(\d+)$
Une simple version européenne de numéros, qui correspond à des chiffres comme 0034617393211 mais aussi longtemps que 004401484172842.
Espère que cela aide :·)
Voici une regex pour la suite de la plupart des communes de numéro de téléphone scénarios. Bien que ce soit adapté à partir d'un point de vue AMÉRICAIN pour la région de codes, il travaille pour les foires internationales.
Un numéro de téléphone valide et ne peut pas être tous les zéros.
Explication:
Plus d'exemples et explications - https://regex101.com/r/hTH8Ct/2/
Le plan de numérotation international est basé sur l'UIT E. 164 plan de numérotation. Je suppose que c'est le point de départ de votre expression régulière.
Je vais mettre à jour ce si je me déplace pour créer une expression régulière en fonction de l'UIT E. 164 de numérotation.
Cette Expression Regex fonctionne pour l'Inde, le Canada, l'Europe, la Nouvelle-Zélande, Australie, États-unis, les numéros de téléphone, ainsi que leurs codes de pays:
"^(\+(([0-9]){1,2})[-.])?((((([0-9]){2,3})[-.]){1,2}([0-9]{4,10}))|([0-9]{10}))$"
Cela fonctionne pour moi, sans 00, 001, 0011, etc préfixe si:
Même si ce n'est pas vraiment à l'aide de RegExp pour faire le travail ou peut-être à cause de cela - cela ressemble à une belle solution pour moi: https://intl-tel-input.com/node_modules/intl-tel-input/examples/gen/is-valid-number.html
Essayez les API suivantes pour le numéro de téléphone de validation.
Aussi ce sera de retour au Pays, de la Région et le Fournisseur de
démo
https://libphonenumber.appspot.com/
git
https://github.com/googlei18n/libphonenumber/releases/tag/v8.9.0
Essayer, cela fonctionne pour moi.
J'ai utilisé cette ci-dessous:
Le format +CCC.NNNNNNNNNNxEEEE ou 00CCC.NNNNNNNNNNxEEEE
Numéro de téléphone doit commencer par '+' ou '00' pour un appel international.
où C est les 1 à 3 chiffres de code de pays,
N est jusqu'à 14 chiffres,
et E est l' (en option) extension.
Le premier signe et le point suivant le code de pays sont nécessaires. Le littéral caractère “x” est nécessaire uniquement si une extension est prévue.
Essayer cela, je ne sais pas si il y a un numéro de téléphone en plus de 12:
^(00|\+){1}\d{12,15}$
alors?