RegEx: royaume-Uni lignes terrestres, les numéros de téléphone Mobile
J'ai eu du mal à trouver une solution convenable :-
J'ai besoin d'une regex expression qui correspond à tous les royaume-UNI, les numéros de téléphone et les téléphones mobiles.
Jusqu'à présent, cette une seule semble couvrir la plupart du royaume-UNI numéros:
^0\d{2,4}[ -]{1}[\d]{3}[\d -]{1}[\d -]{1}[\d]{1,4}$
Cependant numéros mobiles ne fonctionnent pas avec cette expression de l'expression ou de numéros de téléphone, écrit en un seul bloc solide comme 01234567890.
Quelqu'un pourrait-il m'aider à créer l'expression regex?
OriginalL'auteur AdamWhite | 2010-09-08
Vous devez vous connecter pour publier un commentaire.
Serait-ce regex?
Remarquez comment les espaces et les tirets sont facultatives et peuvent être de la partie.. il est maintenant divisée en deux groupes de capture appelé
area_code
ettel_no
pour le décomposer et le plus facile à extraire.J'ai fondé cette regex basé sur le wikipedia par Matt linky..
j'ai déjà mis en œuvre de manière incorrecte, malheureusement, j'ai dû me mettre en œuvre cette expression n'était pas l'idéal. Cependant, j'ai eu le temps de revoir l'ensemble de validation et cette méthode n'a de réponse à la majorité de mes questions, merci
OriginalL'auteur t0mm13b
est blatently incorrect: un chiffre OU un espace OU un tiret.
01000 n'est pas valide royaume-UNI zone de code. 123456 n'est pas valide et le numéro local.
Il est important que les données de test être réel, les indicatifs de zone et le nombre réel des plages.
Le schéma ci-dessus est des ordures pour de nombreuses raisons différentes.
[7,8] correspond à 7 ou une virgule ou 8. Vous n'avez pas besoin de correspondre à une virgule.
Londres numéros aussi commencer avec 3 pas juste 7 ou 8.
Londres 020 numéros ne sont pas les seuls 2+8 format des nombres; voir aussi 023, 024, 028 et 029.
[1-9]{1} simplifie [1-9]
[ ]? simplifie de \s?
Ayant trouvé le intial 0 une fois, pourquoi continuer à chercher encore et encore?
^(0....|0....|0....|0....)$ simplifie à ^0(....|....|....|....)$
Au sérieux. ([1]|[2]|[3]|[7]){1} simplifie [1237] ici.
Royaume-UNI, les numéros de téléphone utilise une variété de formats: 2+8, 3+7, 3+6, 4+6, 4+5, 5+5, 5+4. Certains utilisateurs ne connaissent pas le format qui va avec qui, au nombre de gamme et pourrait trompez sur entrée. Laissez-les faire; vous êtes intéressés par les CHIFFRES.
Étape 1: Vérifier le format d'entrée est valide
Assurez-vous que l'entrée ressemble à un royaume-UNI numéro de téléphone. Accepter divers préfixes de numérotation, +44, 011 44, 00 44 avec ou sans parenthèses, tirets ou des espaces; ou format national avec un 0. Permettre à l'utilisateur d'utiliser n'importe quel format qu'ils veulent pour le reste du numéro: (020) 3555 7788 ou 00 (44) 203 555 7788 ou 02035-557-788 même si il est dans le mauvais format pour que le nombre particulier. Ne vous inquiétez pas déséquilibrée entre parenthèses. La partie importante de l'entrée est de s'assurer que c'est le nombre correct de chiffres. La ponctuation et les espaces n'ont pas d'importance.
Le schéma ci-dessus correspond à ouverture en option parenthèses, suivie par 00 ou 011 et en option de la fermeture de parenthèses, suivie par l'option d'un espace ou un tiret, suivi par l'ouverture en option parenthèses. Sinon, l'ouverture initiale parenthèses sont suivies par un littéral + sans espace ni trait d'union. Aucune des deux options précédentes sont ensuite suivis par 44 avec l'option de fermeture de parenthèses, suivie par l'option de l'espace ou un trait d'union, suivie par l'option 0, en option, entre parenthèses, suivie par l'option de l'espace ou un trait d'union, suivie par l'ouverture en option parenthèses (format international). Sinon, le modèle correspond initiale en option de l'ouverture de parenthèses, suivie par l'0 tronc code (format national).
La partie précédente est ensuite suivi par le NDC (indicatif de zone) et l'abonné numéro de téléphone dans l'2+8, 3+7, 3+6, 4+6, 4+5, 5+5 ou 5+4 format avec ou sans espaces et/ou des traits d'union. Cela comprend également des dispositions pour l'option de fermeture de parenthèses et/ou facultatif de l'espace ou un trait d'union après l'endroit où l'utilisateur pense que la zone de code se termine et le local de l'abonné numéro commence. Le modèle permet à n'importe quel format pour être utilisé avec un GO nombre. Le format d'affichage doit être corrigé plus tard par logique si le format est mauvais pour ce nombre a été utilisé par l'utilisateur sur entrée.
Le modèle se termine par une extension optionnelle nombre disposés comme une option de l'espace ou un trait d'union suivi par x, ext et facultatif période, ou #, suivi du numéro de poste chiffres. Le modèle n'a pas pris la peine de vérifier l'équilibre entre parenthèses, car elles seront supprimées à partir du numéro à l'étape suivante.
À ce stade, vous n'avez pas de soins si le nombre commence 01 ou 07 ou quelque chose d'autre. Vous ne vous souciez pas de savoir si c'est valide, le code de la zone. Les étapes ultérieures traitera de ces questions.
Étape 2: Extrait de la N de sorte qu'il peut être vérifié en détail pour la longueur et la gamme
Après vérification de l'entrée ressemble à un GO numéro de téléphone à l'aide du modèle ci-dessus, la prochaine étape consiste à extraire les RSN partie de sorte qu'il peut être vérifié en détail pour la validité et puis mis en forme dans le droit chemin pour le numéro de plage.
Utiliser le schéma ci-dessus pour extraire le '44" à partir de $1 à savoir que le format international a été utilisé, sinon, supposons format national si $1 est nulle.
Extrait de l'extension optionnelle nombre de détails à partir de 3 $et de les stocker pour une utilisation ultérieure.
Extrait de l'NSN (y compris les espaces, tirets et les parenthèses) à partir de $2.
Étape 3: Valider la NSN
Enlever les espaces, tirets et les parenthèses de 2 $et utiliser d'autres modèles RegEx pour vérifier la longueur et de la gamme et d'identifier le type de numéro.
Ces modèles sera beaucoup plus simple, car ils n'auront pas à faire face à divers préfixes de numérotation ou de codes de pays.
Le modèle pour correspondre valide les numéros de téléphone mobile est donc aussi simple que
Taux de prime est
Il y aura un certain nombre d'autres modèles pour chaque type de numéro: téléphones fixes, des entreprises taux de non-géographique, VoIP, etc.
En décomposant le problème en plusieurs étapes, une très large gamme de formats d'entrée peuvent être admis, et la gamme de nombre et de longueur pour les RSN vérifié en détail.
Étape 4: enregistrer le numéro de
Une fois la DSN a été extraite et validé, store le nombre avec le code du pays et de tous les autres chiffres sans espaces ou des signes de ponctuation, par exemple 442035557788.
Étape 5: mettre en forme le numéro pour afficher
Un autre ensemble de règles simples peuvent être utilisés pour mettre en forme le numéro nécessaires +44 ou de l'ajout d'un 0 au début.
La règle pour les numéros commençant 03 est
formaté comme
et pour les numéros commençant 02 est
formaté comme
La liste complète est assez longue. Je pourrais copier et coller le tout dans ce fil, mais il serait difficile de maintenir cette information à plusieurs endroits au fil du temps. Pour le moment la liste complète peut être trouvée à: http://aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers
Le lien fonctionne pour moi
OriginalL'auteur g1smd
Étant donné que, parfois, les gens écrivent leurs numéros avec des espaces dans des endroits aléatoires, vous pourriez être mieux en ignorant les espaces, tous ensemble, - vous pouvez utiliser une regex aussi simple que cela, alors:
^0(\d ?){10}$
Cela correspond à:
Mais il correspond également à:
De sorte que vous pouvez ne pas aimer, mais c'est certainement plus simple.
OriginalL'auteur Mike Goatly
Bande de tous les espaces et les caractères non numériques, puis de faire le test. Ça va être musch , beaucoup plus facile que d'essayer de prendre en compte toutes les options possibles autour de supports, espaces, etc.
Essayez ce qui suit:
Commence avec
0
ou+44
(pour l'international) - I;m sûr que vous pourriez ajouter0044
si vous le souhaitez.Il a alors une
1
,2
,3
ou7
.Puis, il a 8 ou 9 chiffres.
Si vous voulez être encore plus intelligent, celui-ci peut être une référence utile: http://en.wikipedia.org/wiki/Telephone_numbers_in_the_United_Kingdom
[0]{1}
et[4]{2}
... oO Aussi, il y a trop de regroupement en cours.Merci pour la réponse, malheureusement je ne peux pas modifier le c# pour la bande de l'espace blanc de la chaîne.
OriginalL'auteur Matt Lacey
Ce n'est pas une seule regex, mais il y a des exemples de code à partir de Braemoor Logiciel qui est simple à suivre et assez complet.
La JS version est probablement la plus facile à lire. Il supprime les espaces et les tirets (dont je me rends compte que vous avez dit que vous ne pouvez pas le faire), puis applique un certain nombre de positifs et négatifs regexp contrôles.
OriginalL'auteur Rup
Commencer par le décapage de la non-numériques, à l'exception d'un + comme premier caractère.
(Javascript)
L'expression régulière ci-dessous permet, après la internationaux de l'indicateur +, toutes les combinaisons entre 7 et 15 chiffres (l'UIT maximum), SAUF si le code est le: +44 (royaume-UNI). Sinon, si la chaîne commence par +44, +ou 440 0, il est suivi par 2 ou 7, puis par neuf de un chiffre, ou il est suivi par 1, puis à tous les chiffres, sauf 0, alors soit sept ou huit de chiffre. (Donc 0203 est valide, 0703 est valide, mais 0103 n'est pas valide). Il n'y a pas actuellement de code comme 025 (ou à Londres 0205), mais ceux-ci pourraient un jour être alloué.
Son objectif principal est d'identifier un bon chiffre pour un non-numéro d'entreprise, suivi par le nombre correct de chiffres à suivre. Il n'est pas en déduire que si l'abonné du numéro local est de 5, 6, 7 ou 8 chiffres. Ne pas appliquer l'interdiction initiale de '1' ou '0' dans le numéro d'abonné, à propos de laquelle je ne trouve aucune information quant à savoir si ces anciennes règles continuent de s'appliquer. Royaume-UNI téléphone règles ne sont pas appliquées correctement formaté international numéros de téléphone à partir de l'extérieur du royaume-UNI.
OriginalL'auteur user3015482