54 votes

expression régulière pour les numéros de téléphone mobile indiens

Je veux une expression régulière pour les numéros de téléphone mobile indiens qui se composent de 10 chiffres.
Les numéros qui doivent correspondre commencent par 9 ou 8 ou 7.

Par exemple :

9882223456
8976785768
7986576783

Il ne doit pas correspondre aux numéros commençant par 1 à 6 ou 0.

0 votes

147voto

eldarerathis Points 14545

^[789]\d{9}$ devrait faire l'affaire.

^     #Match the beginning of the string
[789] #Match a 7, 8 or 9
\d    #Match a digit (0-9 and anything else that is a "digit" in the regex engine)
{9}   #Repeat the previous "\d" 9 times (9 digits)
$     #Match the end of the string

UPDATE

Certains opérateurs de télécommunications en Inde ont introduit de nouvelles séries de numéros de téléphone mobile qui commencent par le chiffre 6.

pour cet usage :

^[6-9]\d{9}$

0 votes

J'ai supprimé mon précédent commentaire car je l'ai trouvé incorrect. Le site \d correspondra apparemment à n'importe quel chiffre connu par le moteur regex, quelle que soit la culture actuelle. C'est-à-dire qu'il correspondra à la fois aux chiffres latins, arabes et punjabi, etc.

0 votes

La regex retourne vrai pour tous les 7,8,9 aussi. Ces cas peuvent-ils être traités par une regex ?

0 votes

Frère @eldarerathis il y a un grand flux dans ceci. Il valide aussi les nombres ayant plus de 10 chiffres. Fondamentalement, notre regex (parce que je l'utilise aussi) trouve un nombre valide placé n'importe où dans une chaîne de caractères, comme 123456. 9897969594 12345 . Ce problème peut être résolu en vérifiant en plus la longueur de la chaîne contenant le nombre. Je serais heureux si vous donniez une regex alternative.

48voto

webx Points 31
^(?:(?:\+|0{0,2})91(\s*[\-]\s*)?|[0]?)?[789]\d{9}$

Bonjour, Il s'agit d'une expression rationnelle pour la validation des numéros de téléphone mobile locaux indiens et pour les numéros internationaux indiens.

en commençant par 9,8,7, vous pouvez en ajouter d'autres.

vous pouvez le tester en utilisant https://regex101.com/

Les numéros valides sont.

9883443344
09883443344
919883443344
0919883443344
+919883443344
+91-9883443344
0091-9883443344
+91 -9883443344
+91- 9883443344
+91 - 9883443344
0091 - 9883443344

1 votes

Merci webx...Je veux utiliser votre regex dans JAVA script. Donc pour l'information du développeur, vous devez remplacer la regex par ce qui suit. Comme indiqué dans mon exemple, vous pouvez utiliser var find1 = new RegExp("(? :(? : \\ +|0{0,2})91( \\s *[ \\ -] \\s *)?|[0] ?)?[789] \\d {9}", "g") ;

0 votes

0000000000 est également invalide et cela fonctionne aussi.

0 votes

Salut Keyur, "0000000000" n'est pas valide et mon regex n'accepte pas les numéros de mobile non valides ;)

9voto

Lasse Espeholt Points 11944

Voilà :)

^[7-9][0-9]{9}$

0 votes

Il ne doit pas correspondre 9999999999 ou tout numéro de téléphone mobile dont un seul numéro est répété dix fois. L'expression rationnelle ci-dessus correspond à ces numéros.

7voto

Martin Liversage Points 43712

Pour répéter les autres réponses avec quelques informations supplémentaires sur ce qu'est une chiffre :

new Regex("^[7-9][0-9]{9}$")

Correspond aux numéros de téléphone écrits en chiffres romains.

new Regex(@"^[7-9]\d{9}$", RegexOptions.ECMAScript)

Correspondra à la même chose que la regex précédente. Lorsque RegexOptions.ECMAScript est spécifié \d correspond à tout chiffre romain.

new Regex(@"^[7-9]\d{9}$")

Correspond aux numéros de téléphone écrits en utilisant n'importe quel chiffre pour les 9 derniers chiffres.

La différence est que les deux premiers modèles ne correspondent qu'aux numéros de téléphone de type 9123456789 tandis que le troisième modèle correspondra également à des numéros de téléphone tels que 9 .

Vous pouvez donc utiliser \d pour correspondre à des chiffres natifs. Cependant, si vous voulez limiter la correspondance des chiffres indigènes à certains d'entre eux (comme 7-9), vous devez passer par une étape supplémentaire. Pour que le punjabi (Inde) puisse correspondre à vous pouvez le faire comme ceci :

CultureInfo.GetCultureInfo("pa-IN").NumberFormat.NativeDigits.Skip(7).Take(3)

Cela renvoie les chiffres natifs pour 7-9. Vous pouvez ensuite les regrouper pour former une expression régulière "adaptée à la culture" pour les chiffres 7 à 9.

7voto

Vikas Points 101

Cela a marché pour moi

^(?:(?:\+|0{0,2})91(\s*[\ -]\s*)?|[0]?)?[789]\d{9}|(\d[ -]?){10}\d$

Scénarios valables :

+91-9883443344
9883443344
09883443344
919883443344
0919883443344
+919883443344
+91-9883443344
0091-9883443344
+91 -9883443344
+91- 9883443344
+91 - 9883443344
0091 - 9883443344
7856128945
9998564723
022-24130000
080 25478965
0416-2565478
08172-268032
04512-895612
02162-240000
+91 9883443344
022-24141414

Scénarios non valides :

WAQU9876567892
ABCD9876541212
0226-895623124
6589451235
0924645236
0222-895612
098-8956124
022-2413184

1 votes

J'ai utilisé votre regex en javascript mais je dois supprimer les symboles ^ et $. Et je dois aussi \\ au lieu d'un seul \. Pouvez-vous m'expliquer à quoi servent ^ et $ ?

0 votes

@Pankaj ^ - Utilisé pour vérifier le début de la chaîne de caractères $ - Utilisé pour vérifier la fin de la chaîne de caractères Dans de nombreux langages de programmation, il existe certains caractères spéciaux qui sont traités par le compilateur avant l'expression rationnelle. Par exemple : Pour faire correspondre la chaîne D:\test la regex s'écrirait comme suit : "D\ : \\test " Vous pouvez obtenir plus d'informations à ce sujet lien

0 votes

@VikasKitawat : Oui vikas j'ai les choses. J'ai tout trouvé dans developer.mozilla.org/fr/docs/Web/JavaScript/Guide/ pour javascript

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X