web-dev-qa-db-fra.com

Expression régulière pour les numéros de téléphone basés sur Go et uniquement numériques

Je veux un code d'expression régulière qui n'autorise que les numéros de téléphone numériques (par exemple 1234567890) ainsi que le numéro de format GB (par exemple 123-456-7890).

Cette expression doit fonctionner pour les deux conditions.

J'utilise actuellement l'expression régulière ci-dessous qui n'autorise que le numéro de téléphone en Go.

/^(\()?\d{3}(\))?(-|\s)?\d{3}(-|\s)\d{4}$/ 

J'ai besoin d'aide pour n'autoriser que le nombre numérique également.

9
sandeepsure

Il y a des expressions régulières de numéros de téléphone au Royaume-Uni ici .

Le plus coté de cette page est:

^(((\+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}))?$

Il est décrit comme:

Matches     +447222555555   | +44 7222 555 555 | (0722) 5555555 #2222
Non-Matches (+447222)555555 | +44(7222)555555  | (0722) 5555555 #22

Personnellement, je ne mettrais pas une regex stricte sur un numéro de téléphone à moins que cela soit absolument nécessaire pour que le numéro de téléphone réel de l'utilisateur soit utilisé pour la vérification de l'identité ou quelque chose impliquant des paiements. Il existe de nombreuses variantes de numéros de téléphone. Certains utilisateurs pourraient même utiliser Skype comme téléphone principal. En validant cette fonction, vous allez simplement bloquer/frustrer les utilisateurs.

Notez également que le format britannique est incorrect. Les numéros de téléphone britanniques doivent contenir 11 chiffres et sont normalement au format (01234) 123123 - nous (jamais) _ utilisons des tirets et le premier chiffre doit toujours être 0.

20
Dunhamzzz

Les numéros de téléphone britanniques doivent contenir 11 chiffres

Les numéros de téléphone du Royaume-Uni ont généralement 9 ou 10 chiffres sans compter le code de la ligne 0 ou le code du pays +44. Quelques-uns n'ont que 7 chiffres.

et sont normalement dans le format (01234) 123123

L'exemple montre un numéro de format UK 4 + 6. Le Royaume-Uni utilise une variété de formats, dont 2 + 8, 3 + 7, 4 + 6, 4 + 5, 5 + 5 et 5 + 4 pour les numéros géographiques et 0 + 10, 0 + 9 et 0 + 7 pour les numéros non géographiques. Nombres.

Il y a une liste pratique à:

http://www.aa-asterisk.org.uk/index.php/Number_format

Correspond au numéro de téléphone britannique dans n'importe quel format

^(?:(?:\(?(?: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}))(?:[\s-]?(?:x|ext\.?|\#)\d{3,4})?$ 

Le modèle ci-dessus permet à l'utilisateur d'entrer le numéro dans n'importe quel format avec lequel il est à l'aise. Ne contraignez pas l'utilisateur à entrer des formats spécifiques.

Extraire le NNO, le préfixe et l'extension

^(\(?(?:0(?:0|11)\)?[\s-]?\(?|\+)(44)\)?[\s-]?)?\(?0?(?:\)[\s-]?)?([1-9]\d{1,4}\)?[\d[\s-]]+)((?:x|ext\.?|\#)\d{3,4})?$

2 $ seront «44» si le format international a été utilisé, sinon supposez le format national.

$ 4 contient le numéro de poste s'il est présent.

$ 3 contient la partie NNO.

Validation et formatage

Utilisez d’autres modèles RegEx pour vérifier que le NNO a le bon nombre de chiffres pour cette tranche de numéros. Enfin, stockez le numéro au format E.164 ou affichez-le au format E.123.

Il existe une liste très détaillée de modèles RegEx de formatage et de validation d'affichage pour les numéros britanniques à l'adresse:

Expressions régulières permettant de valider et de formater des numéros de téléphone de grande taille

Il est trop long à reproduire ici et il serait difficile de conserver plusieurs exemplaires de ce document.

26
g1smd

C'est un peu complexe de tester un numéro de téléphone au Royaume-Uni car le format est assez différent d'une province à l'autre. Découvrez ce link pour savoir par vous-même combien de formats un numéro de téléphone britannique peut avoir.

Utilisation

^((((\(?0\d{4}\)?\s?\d{3}\s?\d{3})|(\(?0\d{3}\)?\s?\d{3}\s?\d{4})|(\(?0\d{2}\)?\s?\d{4}\s?\d{4}))(\s?\(\d{4}|\d{3}))?)|((\+44\s?7\d{3}|\(?07\d{3}\)?)\s?\d{3}\s?\d{3})|((((\+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}))?$

Créé à l'aide des informations de regexlib.com

Les valeurs qui correspondent à l'expression régulière:

01222 555 555 | (010) 55555555 # 2222 | 0122 555 5555 # 222 | 07222 555555 | (07222) 555555 | +44 7222 555 555 | +447222555555 | +44 7222 555 555 | (0722) 5555555 # 2222

Valeurs qui ne correspondent pas à l'expression régulière:

01222 555 5555 | (010) 55555555 # 22 | 0122 5555 5555 # 222 | 7222 555555 | +44 07222 555555 | (+447222) 555555 | (+447222) 555555 | +44 (7222) 555555 | (0722) 5555555 # 22

0
Revanth Kumar