Utiliser les expressions régulières (Regex) en Javascript
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 !