+44-(0)7966-591739
Le (0) n'est pas valide dans l'affichage du numéro de téléphone. Retirez-le. Il s'agit du +44 7966 591739 ou du 07966 591739.
Le motif de RegEx est inefficace de multiples façons:
(\d{4}|\d{3})
Les Simplifie ci-dessus à:
\d{3,4}
Il y a des problèmes plus graves:
^(((+44\s?\d{4}|(?0\d{4})?)\s?\d{3}\s?\d{3})|((+44\s?\d{3}|(?0\d{3})?)\s?\d{3}\s?\d{4})|((+44\s?\d{2}|(?0\d{2})?)\s?\d{4}\s?\d{4}))(\s?#(\d{4}|\d{3}))?$
Ayant trouvé le premier +44 ou conduisant 0 une fois, pourquoi continuer à le chercher encore et encore?
^((+44\s?..|0..).....|(+44\s?..|0..).....|(+44\s?..|0..).....)
simplifie à
^(+44\s?|0)(.. .....|.. .....|.. .....)
Cependant, le schéma ci-dessus ne sert que pour UK 4 + 6, 3 + 7 et 2 + 8 numéros de format et non pour 3 + 6, 4 + 5, 5 Numéros de format +5 et 5 + 4.
Le motif est insuffisant.
La validation et le formatage du numéro de téléphone doivent être divisés en étapes distinctes. Permettre un large éventail de formats d'entrée, extraire les chiffres vitaux et jeter les différents préfixes de numérotation, puis formater strictement le nombre restant en format international ou national.
Pour connaître les numéros de Londres, le format correct avec des espaces est: +44 20 3555 7890 ou 020 3555 7890 ou (020) 3555 7890 et sans espaces: +442035557890 ou 02035557890.
(0) en parenthèses est JAMAIS valide. Ne l'utilise pas.
Les numéros de téléphone britanniques utilisent une variété de formats: 2 + 8, 3 + 7, 3 + 6, 4 + 6, 4 + 5, 5 + 5, 5 + 4. Certains utilisateurs ne savent pas quel format va avec quelle gamme de numéros et peut utiliser le mauvais en entrée. Laissez-les faire cela; vous êtes intéressé par les DIGITS.
Étape 1: Vérifiez le format d'entrée semble valide
Assurez-vous que l'entrée ressemble à un numéro de téléphone au Royaume-Uni. Acceptez les différents préfixes, +44, 011 44, 00 44 avec ou sans parenthèses, tirets ou espaces; ou format national avec un 0. Laissez l'utilisateur utiliser n'importe quel format pour le reste du numéro: (020) 3555 7788 ou 00 (44) 203 555 7788 ou 02035-557-788 même si c'est le mauvais format pour ce nombre particulier. Ne vous inquiétez pas des parenthèses déséquilibrées. La partie importante de l'entrée est de s'assurer que c'est le bon nombre de chiffres. La ponctuation et les espaces n'ont pas d'importance.
^\(?(?:(?:0(?:0|11)\)?[\s-]?\(?|\+)44\)?[\s-]?\(?(?:0\)?[\s-]?\(?)?|0)(?:\d{5}\)?[\s-]?\d{4,5}|\d{4}\)?[\s-]?(?:\d{5}|\d{3}[\s-]?\d{3})|\d{3}\)?[\s-]?\d{3}[\s-]?\d{3,4}|\d{2}\)?[\s-]?\d{4}[\s-]?\d{4}|8(?:00[\s-]?11[\s-]?11|45[\s-]?46[\s-]?4\d))(?:(?:[\s-]?(?:x|ext\.?\s?|\#)\d+)?)$
Les parenthèses d'ouverture motif correspond facultatifs ci-dessus, suivie de 00 ou 011 et en option entre parenthèses de fermeture, puis par un espace ou un tiret facultatif, suivi par des parenthèses d'ouverture en option. Alternativement, les parenthèses ouvrantes initiales sont suivies d'un + littéral sans espace ou tiret suivant. Chacune des deux options précédentes est suivie de 44 avec des parenthèses fermantes facultatives, suivies d'un espace ou trait d'union facultatif, suivi de 0 facultatif dans les parenthèses facultatives, suivi d'un espace ou trait d'union facultatif, suivi de parenthèses ouvrantes facultatives (format international). En variante, le motif correspond aux parenthèses ouvrantes initiales facultatives suivies du code de jonction 0 (format national).
La partie précédente est suivie par le NDC (indicatif régional) et le numéro de téléphone de l'abonné en 2 + 8, 3 + 7, 3 + 6, 4 + 6, 4 + 5, 5 + 5 ou 5 + 4 format avec ou sans espaces et/ou traits d'union. Ceci inclut également une disposition pour des parenthèses de fermeture facultatives et/ou un espace ou trait d'union optionnel après lequel l'utilisateur pense que l'indicatif régional se termine et que le numéro d'abonné local commence. Le motif permet d'utiliser n'importe quel format avec n'importe quel numéro de Go. Le format d'affichage doit être corrigé par une logique ultérieure si le mauvais format pour ce numéro a été utilisé par l'utilisateur en entrée.
Le motif se termine par un numéro de poste optionnel disposé en tant qu'espace ou trait d'union optionnel suivi de x, ext et d'une période optionnelle, ou #, suivi des chiffres du numéro de poste. Le motif entier ne prend pas la peine de vérifier les parenthèses équilibrées car elles seront supprimées du nombre à l'étape suivante.
A ce stade, vous ne vous souciez pas du fait que le numéro commence par 01 ou 07 ou autre chose. Peu importe que ce soit un indicatif régional valide. Les étapes ultérieures traiteront de ces problèmes.
Étape 2: Extraire le NSN il peut être vérifié de manière plus détaillée pour la longueur et la gamme
Après avoir vérifié l'entrée ressemble à un numéro de téléphone GB en utilisant le schéma ci-dessus, l'étape suivante consiste à extraire la NSN partie afin qu'il puisse être vérifié plus en détail pour la validité, puis formaté de la bonne façon pour la gamme de numéros applicables.
^\(?(?:(?:0(?:0|11)\)?[\s-]?\(?|\+)(44)\)?[\s-]?\(?(?:0\)?[\s-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d-]+)(?:((?:x|ext\.?\s?|\#)\d+)?)$
Utilisez le schéma ci-dessus pour extraire le « 44 » de 1 $ à savoir que le format international a été utilisé, on suppose par ailleurs le format national si 1 $ est nul.
Extrayez les détails du numéro de poste optionnel à partir de 3 $ et stockez-les pour une utilisation ultérieure.
Extrayez le NNO (espaces, traits d'union et parenthèses compris) à partir de 2 $.
Étape 3: Valider la NSN
Supprimer les espaces, et les traits d'union entre parenthèses de 2 $ et utiliser d'autres modèles RegEx pour vérifier la longueur et la plage et identifier le type de numéro.
Ces modèles seront beaucoup plus simples, car ils n'auront pas à traiter avec différents préfixes de numérotation ou codes de pays.
Le modèle pour correspondre à des numéros mobiles valides est donc aussi simple que
^7([45789]\d{2}|624)\d{6}$
taux de cotisation est
^9[018]\d{8}$
Il y aura un certain nombre d'autres modèles pour chaque type de numéro: téléphones fixes, le taux d'activité
En divisant le problème en plusieurs étapes, un très large éventail de formats d'entrée peut être autorisé, ainsi que la plage de nombres et la longueur gth pour le NSN vérifié très en détail.
Étape 4: Programmez le numéro
Une fois que le NSN a été extrait et validé, enregistrer le numéro avec le code pays et tous les autres chiffres sans espace ni ponctuation, par exemple442035557788.
Étape 5: Format du nombre pour l'affichage
Une autre série de règles simples peut être utilisé pour formater le nombre au +44 ou 0 requis ajouté au début.
La règle pour les numéros commençant 03 est
^44(3\d{2})(\d{3])(\d{4})$
formaté comme
0$1 $2 $3 or as +44 $1 $2 $3
et pour les numéros commençant 02 est
^44(2\d)(\d{4})(\d{4})$
formaté comme
(0$1) $2 $3 or as +44 $1 $2 $3
La liste complète est assez longue. Je pourrais copier et coller tout cela 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
Veuillez ne pas exiger de formats particuliers de numéro de téléphone. Il y a une grande variété d'orthographes du numéro de téléphone au Royaume-Uni (sans parler des connexions outre-mer), et le rejet de formats arbitraires frustrera les utilisateurs en leur disant que leur vrai numéro de téléphone est invalide. – bobince