Valider les numéros de téléphone avec des expressions régulières

Cet article a été traduit de l'anglais par IA et peut contenir des erreurs. Vos commentaires nous aideront à l'améliorer.

Les expressions régulières sont des outils puissants pour décrire des modèles dans le texte, y compris les numéros de téléphone. Vous pouvez utiliser cette fonction pour valider si un numéro de téléphone collecté est bien formé.

Dans ce tutoriel, nous allons voir comment construire une expression régulière étape par étape pour valider les numéros de téléphone collectés.

Comprendre le domaine

Avant d'écrire une expression régulière, il est important de comprendre le format attendu du texte. Dans cet exemple, nous allons examiner la validation des numéros de téléphone mobile de la République démocratique du Congo (RDC).

En RDC, le plan de numérotation pour les téléphones mobiles est le suivant :

  • Vodacom : 81X XXX XXX ou 82X XXX XXX
  • Supercell : 80X XXX XXX
  • Congo-Chine Telecom : 84X XXX XXX
  • Celltell : 97X XXX XXX, 98X XXX XXX ou 99X XXX XXX

Où « X » est n'importe quel chiffre, de 0 à 9.

Nous pouvons utiliser les modèles ci-dessus pour écrire une règle de validation qui teste un numéro de mobile valide.

Une expression régulière simple

Commençons par faire correspondre les numéros Vodacom. Chaque numéro de mobile Vodacom commence par « 81 » ou « 82 » et un autre chiffre, puis deux groupes de trois chiffres :

REGEXMATCH(PHONE_NUMBER, "8[12][0-9] [0-9][0-9][0-9] [0-9][0-9][0-9]")

Ici, nous utilisons la notation de classe de caractères pour spécifier une plage de caractères :

  • [12] correspond à « 1 » ou « 2 »
  • [0-9] correspond à n'importe quel caractère entre « 0 » et « 9 »

Nous pouvons raccourcir cette expression en utilisant des classes de caractères répétées :

REGEXMATCH(PHONE_NUMBER, "8[12][0-9] [0-9]{3} [0-9]{3}")

Le {3} indique que le caractère avant doit correspondre exactement trois fois.

Correspondance avec n'importe quel fournisseur de téléphonie mobile

La grande différence entre les différents fournisseurs est le premier groupe de chiffres :

Fournisseur Modèle du premier groupe
Vodacom 8[12][0-9]
Supercell 80[0-9]
Congo-Chine 84[0-9]
Celltell 9[789][0-9]

Nous pouvons faire correspondre n'importe lequel des fournisseurs ci-dessus en les regroupant à l'aide de parenthèses et en utilisant l'opérateur pipe (|) pour spécifier des alternatives :

REGEXMATCH(PHONE_NUMBER, "((8[12][0-9])|(80[0-9])|(84[0-9])|(9[789][0-9])) [0-9]{3} [0-9]{3}")

En fait, la seule différence entre les trois premiers fournisseurs est le deuxième chiffre, nous pourrions donc simplifier davantage à :

REGEXMATCH(PHONE_NUMBER, "((8[0124][0-9])|(9[789][0-9])) [0-9]{3} [0-9]{3}")

Cependant, cela correspondra à un numéro de téléphone où qu'il apparaisse dans le texte. Ainsi, « 801 343 933 » correspondra, mais aussi « TEL : 801 343 933 ». Nous préférerions que seul le numéro de téléphone soit saisi dans le champ de texte. Nous pouvons donc utiliser le symbole ^ pour exiger une correspondance au début du champ et $ pour exiger une correspondance à la fin :

REGEXMATCH(PHONE_NUMBER, "^((8[0124][0-9])|(9[789][0-9])) [0-9]{3} [0-9]{3}$")

Calcul du nom des fournisseurs de téléphonie mobile

Nous pouvons également utiliser l'expression régulière pour calculer le nom du fournisseur de téléphonie mobile à partir du numéro de téléphone à l'aide de la fonction IF avec la fonction REGEXMATCH :

IF(REGEXMATCH(PHONE_NUMBER, "^8[12][0-9]"), "Vodacom",
 IF(REGEXMATCH(PHONE_NUMBER, "^80[0-9]"), "Supercell",
   IF(REGEXMATCH(PHONE_NUMBER, "^84[0-9]"), "Congo-Chine",
     IF(REGEXMATCH(PHONE_NUMBER, "^9[789][0-9]"), "Celltell", "Other"))))

Création du formulaire

Maintenant que nous avons nos deux formules, nous pouvons ajouter un formulaire de collecte de données dans ActivityInfo.

Ajouter le formulaire

  1. Accédez à votre base de données.
  2. Cliquez sur « Ajouter un formulaire »
  3. Saisissez le nom du formulaire « Inscription »

Ajouter le champ du numéro de téléphone

  1. Ajoutez un champ de texte avec le nom « Numéro de téléphone » et le code PHONE_NUMBER.
  2. Cochez « Définir les règles de validation »
  3. Collez la formule de validation ci-dessus dans la zone des règles de validation ou ouvrez l'éditeur de formules.
Capture d'écran du champ du numéro de téléphone
Capture d'écran du champ du numéro de téléphone

Ajouter le champ du fournisseur de téléphonie mobile

  1. Ajoutez un champ calculé appelé « Fournisseur de téléphonie mobile »
  2. Dans l'éditeur de formules, collez l'instruction IF ci-dessus.
Capture d'écran du champ du fournisseur de téléphonie mobile
Capture d'écran du champ du fournisseur de téléphonie mobile

Test du formulaire

Lorsque vous ouvrez le formulaire dans la saisie de données, la saisie d'un numéro de téléphone qui ne correspond pas au format de la RDC doit entraîner une erreur de validation :

Capture d'écran du formulaire avec une erreur de validation
Capture d'écran du formulaire avec une erreur de validation

Lorsque la saisie correspond, le champ est validé et le champ calculé affiche le fournisseur de téléphonie mobile correct :

Capture d'écran d'un formulaire valide
Capture d'écran d'un formulaire valide

Vous pouvez essayer le formulaire vous-même.

Pour aller plus loin

Élément suivant
Valider les scripts d'écriture