PRATIQUE PHP 
Tester ses expressions régulières
 
Comment vérifier le bon fonctionnement d'une regexp avant de l'intégrer à son projet. (21/07/2005)
  Forum

Réagissez dans les forums de JDN Développeurs

Les méthodes de développement intègrent de plus en plus souvent la notion de tests unitaires, où une classe/méthode n'est créée que lorsqu'une batterie de tests a été mise en place pour vérifier qu'elle travaille bien comme on l'attend.

Il est possible de répliquer ce type de manoeuvre de manière plus simple pour mettre à l'épreuve une expression régulière, avant de la lâcher au coeur de l'application.

La technique est élémentaire : introduire dans un tableau un nombre de chaînes que l'expression reconnaîtra ou pas, tester l'expression contre chaque contenu de cette chaîne, afficher le résultat pour chaque test afin de vérifier que tout se déroule normalement.

Il est bien entendu aussi important de tester des chaînes qui marcheront forcément, que d'autres qui ne marcheront forcément pas, afin de s'assurer au maximum de la bonne portée de l'expression.

Cette méthode s'applique facilement à tous les langages, voici comment s'y prendre pour un test d'adresse e-mail en PHP.

Le code
<style>
.bon {
  color: green;
  }
.mauvais {
  color: red;
  }
</style>

<?php
$tests = array(
  "borderie@bench.fr",
  "xavier@bor.org",
  "x@b.net",
  "http://borderie.lalala",
  "kokçigrü@plou_pouding point comme",
  "http://lapin@malin.com",
  "mailto:hohoho@hahaha.huhu",
  "gkdfjhgkdjhg@skjqhfuerhjiusngkdjgdgsdmlgkdsjg.nu"
  );

$regexp = "/^[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}$/i";

foreach ($tests as $test) {
  if (preg_match($regexp, $test)) {
    echo "<span class='bon'>$test</span><br />";
    }
  else {
    echo "<span class='mauvais'>$test</span><br />";
    }
  }
?>
 
Rédaction JDN Développeurs
 
 
Accueil | Haut de page