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 motifs 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 verrons comment construire pas à pas une expression régulière 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 nous pencherons sur 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 motifs ci-dessus pour écrire une règle de validation qui teste la validité d'un numéro de mobile.

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 précédent doit correspondre exactement trois fois.

Faire correspondre n'importe quel opérateur de téléphonie mobile

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

Opérateur Motif 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 opérateurs ci-dessus en les regroupant avec des parenthèses et en utilisant l'opérateur barre verticale (|) 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 opérateurs est le deuxième chiffre, nous pourrions donc simplifier davantage en :

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

Cependant, cela fera correspondre 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}$")

Calculer le nom des opérateurs de téléphonie mobile

Nous pouvons également utiliser l'expression régulière pour calculer le nom de l'opérateur de téléphonie mobile à partir du numéro de téléphone en utilisant 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", "Autre"))))

Construire le formulaire

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

Ajouter le formulaire

  1. Aller à votre base de données.
  2. Cliquez sur "Ajouter un formulaire"
  3. Saisir le nom du formulaire "Enregistrement"

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 boîte des règles de validation, ou ouvrez l'éditeur de formule
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 de l'opérateur mobile

  1. Ajoutez un champ calculé appelé "Opérateur mobile"
  2. Dans l'éditeur de formule, collez l'instruction IF ci-dessus.
Capture d'écran du champ de l'opérateur mobile
Capture d'écran du champ de l'opérateur mobile

Tester le formulaire

Lorsque vous ouvrez le formulaire en saisie de données, la saisie d'un numéro de téléphone qui ne correspond pas au format de la RDC devrait 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 bon opérateur mobile :

Capture d'écran du formulaire valide
Capture d'écran du formulaire valide

Vous pouvez essayer le formulaire vous-même.

Lectures complémentaires

Élément suivant
Valider les systèmes d'écriture