Utiliser les expressions régulières (Regex) en Javascript

Mars 2013

Javascript implémente les expressions régulières comme beaucoup d'autres langages, qui est basé sur le standard PCRE (expressions Perl).

Il existe 2 syntaxes différentes pour déclarer un pattern d'expression régulière :

Syntaxe littérale

C'est la méthode la plus simple, il suffit de mettre le pattern entre deux slash, et de placer les différents modifiers après le second slash (un peu à la manière de preg_match en PHP, sauf qu'en JS il ne s'agit pas d'une chaine de caractère) :

var pattern = /big/i;

Attention à ne pas mettre de guillemets autour du pattern, ça n'est pas une chaîne de caractère mais une syntaxe native javascript qui est reconnue par l'interpréteur Javascript. Les débutants font parfois l'erreur, car en PHP on utilise une chaine de caractère pour déclarer le pattern. De plus, on ne peut pas choisir son propre délimiteur comme avec preg_match en PHP.

Objet RegExp

L'autre méthode consiste à créer un nouvel objet RegExp dont le constructeur prend 2 arguments de type string : le pattern, et les options :

var pattern = new RegExp('big', 'i');

.test : tester si une chaine vérifier un pattern

Si vous voulez simplement vérifier si une chaine de caractère match une expression régulière, il faut utiliser la méthode .test (sur l'objet regex) :

var chaine  = 'BIG.bob@yopmail.com';
var pattern = /big/i;

if( pattern.test(chaine) ){
	alert('match');
} else {
	alert('no match');
}

.match : récupérer les occurrences d'une regex dans un tableau

.match permet de récupérer un tableau contenant les match de la chaine, c'est-à-dire les portions de chaines extraites à l'aide des parenthèses capturantes. Match s'utilise sur la chaine de caractère et pas sur l'objet regex comme .test :

var chaine  = 'BIG.bob@yopmail.com';
var pattern = /^(.+)@(.+)$/i;
var matches = chaine.match(pattern);
console.log(matches);

Voici un billet similaire qui vous permettera d'en savoir plus sur incliner un texte sur excel.

Le tableau matches contient la liste des parenthèses capturantes du pattern, ainsi que toute la chaine matchée à l'index 0 (comme en PHP).

match all : récupérer toutes les occurrences

Par défaut, match ne retourne que la première occurrence du pattern trouvé dans la chaine de caractères. Il est possible de matcher toutes les occurrences (comme le fait preg_match_all en PHP) à l'aide de l'option g :

var chaine  = "Well, the way they make shows is, they make one show. That show’s called a pilot.";
var pattern = /shows?/ig;
var matches = chaine.match(pattern);
console.log(matches);

.replace : rechercher et remplacer

Les expressions régulières peuvent aussi servir à rechercher et remplacer toutes les occurrences d'une chaine. Par défaut, la fonction javascript String.replace ne remplace que la première occurence.

Pour remplacer toutes les occurrences, il faut utiliser un pattern avec l'option g, consulter cette page pour en savoir plus : remplacer tout en javascript.

Découvrez ce tutoriel photoshop : texte lueur violette à lire tout de suite !

0 commentaire
facultatif
Facebook Twitter RSS Email
Forum Excel
Venez découvrir le nouveau forum excel question/réponse à la stackoverflow.com !
Forum Excel
hit parade n'en a rien a foutre du W3C Positionnement et Statistiques Gratuites Vincent Paré