Expression régulière - Cours Javascript

Qu'est qu'une expression régulière

Définition

Une expression régulière est une suite de caractères dont chacun a un sens précis.
Le motif ou profil est formée par cette suite de caractères.

Les expressions régulières vont vous permettre de créer des critères de recherche pour faire des recherches dans des chaînes de caractères ou pour remplacer les occurrences (bout de chaîne) par d'autres.

Construire une expression régulière

Infos

Il existe deux façons de créer une expression régulière.

La première consiste à la déclarer comme un objet String en remplaçant les '"' par des '/'.
Exemple de code :
var exp_reg = /MOMO/gi;

La seconde consiste à déclarer un objet RegExp.
Exemple de code :
var exp_reg = new RegExp("MOMO","gi");

Le type

Infos

Le type se trouve en fin d'expression régulière.
Dans le cas de l'objet javascript string nous le mettons après le "/"; dans le cas de l'objet RegExp nous le mettons dans le paramètre passé.

Il permet de donner des informations sur la manière dont expression régulière "va être appliquée".
Les types sont :
- g, l'expression régulière recherche toutes les correspondances et pas seulement la première.
- i, l'expression régulière ne doit pas tenir en compte des majuscules et minuscules.
- m, l'expression régulière doit tenir en compte des lignes (voir ^ et $).
- gim les trois types réunis (les options peuvent être utilisées séparément ou ensemble)

Exemples

Dans ces exemples nous allons afficher toutes les correspondances trouvées.
Exemple avec g :
Exemple de code :
var momo = "dmc DMC dmc Dmc ";
var exp_reg = /dmc/g;
var resultat = momo.match(exp_reg);
for(var i=0;i<resultat.length;i++){
  alert(resultat[i]);
}
//dmc
//dmc
Exemple sans g :
Exemple de code :
var momo = "dmc DMC dmc Dmc ";
var exp_reg = /dmc/;
var resultat = momo.match(exp_reg);
for(var i=0;i<resultat.length;i++){
  alert(resultat[i]);
}
//dmc
Exemple avec i :
Exemple de code :
var momo = "DMC";
var exp_reg = /dmc/i;
var resultat = momo.match(exp_reg);
for(var i=0;i<resultat.length;i++){
  alert(resultat[i]);
}
//DMC
Exemple sans i :
Exemple de code :
var momo = "DMC";
var exp_reg = /dmc/;
var resultat = momo.match(exp_reg);
for(var i=0;i<resultat.length;i++){
  alert(resultat[i]);
}
//il ne se passe rien
Exemple avec gi :
Exemple de code :
var momo = "dmc DMC dmc Dmc ";
var exp_reg = /dmc/gi;
var resultat = momo.match(exp_reg);
for(var i=0;i<resultat.length;i++){
  alert(resultat[i]);
}
//dmc
//DMC
//dmc
//Dmc

Caractères interdits

Infos

Certains caractères ont une symbolique spécifique dans la construction de l'expression régulière.
Donc, si vous voulez tester ce caractère en tant que caractère d'une chaîne, vous devez utiliser leur équivalence :
Caractère spécial Equivalent Caractère spécial Equivalent
\ \\ . \.
$ \$ [ \[
] \] ( \(
) \) { \{
} \} ^ \^
? \? * \*
+ \+ - \-

Le \ est donc un caractère spécial.

Attention, si vous déclarer une nouvelle occurence de RegExp, vous devez doubler le "\".
Exemple de code :
var exp_reg = /\d_dm[a-d]/gi;
var exp_reg = new RegExp("\d_dm[a-d]","gi");

^ et $ fin et début de chaîne

Définition

Les caractères ^ et $ sont des caractères spéciaux.

Le caractère ^ représente un début de chaîne ou début de ligne.
Exemple de code :
var momo = "dmc_1 dmc_2";
var exp_reg = /^dmc_\d/gi;
/* recherche la chaîne commencant par "dmc_" suivit d'un chiffre.*/
var resultat = momo.match(exp_reg);
for(var i=0; resultat!=null && i<resultat.length; i++){
    alert(resultat[i]);
}
//dmc_1


Le caractère $ réprésente une fin de chaîne ou fin de ligne.
Exemple de code :
var momo = "dmc_1 dmc dmc_2";
var exp_reg = /dmc_\d$/gi;
/* recherche la chaîne finissant par "dmc_" suivit d'un chiffre.
si vous remplacer "dmc_2" par "dmc_22" pas de résultat
*/
var resultat = momo.match(exp_reg);
for(var i=0; resultat!=null && i<resultat.length; i++){
    alert(resultat[i]);
}
//dmc_2

Exemple sans le caractère $ et ^.
Exemple de code :
var momo = "dmc_1 dmc dmc_2";
var exp_reg = /dmc_\d/gi;
/* recherche la chaîne "dmc_" suivit d'un chiffre.*/
var resultat = momo.match(exp_reg);
for(var i=0; resultat!=null && i<resultat.length; i++){
    alert(resultat[i]);
}
//dmc_1
//dmc_2

Si l'option m est présente, ^ et $ capturent le début et la fin de chaque ligne au lieu de ne capturer que le début et la fin de la chaîne.

Frontière de mot

Définition

Les caractères b et B sont des caractères spéciaux.
Simplification Description
b Frontière de mot (début/fin de mot)
B Autre qu'une frontière de mot

Exemple avec b :
Exemple de code :
var momo = "admc_0 dmc_1 dmcc_2";
var exp_reg = /\bdmc*_\d/gi;
var resultat = momo.match(exp_reg);
for(var i=0;resultat!=null && i<resultat.length;i++){
  alert(resultat[i]);
}
//dmc_1
//dmcc_2

Exemple avec B :
Exemple de code :
var momo = "0_dmca dmc 2_dmccc";
var exp_reg = /\d_dmc\B/gi;
var resultat = momo.match(exp_reg);
for(var i=0;resultat!=null && i<resultat.length;i++){
  alert(resultat[i]);
}

N'importe quel caractère

Définition

Le caractère point "." est un caractère spécial qui désigne tous les caractères sauf nouvelle ligne.
Exemple de code :
var momo = "dmcbc dmcac dmccc";
var exp_reg = /c.c/gi;
var resultat = momo.match(exp_reg);
for(var i=0;resultat!=null && i<resultat.length;i++){
    alert(resultat[i]);
}
//cbc
//cac
//ccc

Chaîne suivit de

Infos

L'expression "a(?=b)" permet de trouver une chaîne a uniquement suivie de b.
Exemple de code :
var momo = "aliasdmc aliasmomo";
var exp_reg = /alias(?=dmc)/gi
var resultat = momo.replace(exp_reg, "cool");
  alert(resultat);
//cooldmc aliasmomo

Chaîne pas suivit par

Infos

L'expression "a(?!b)" permet de trouver une chaîne a qui n'est pas suivie de b.
Exemple de code :
var momo = "aliasdmc aliasmomo";
var exp_reg = /alias(?!dmc)/gi
var resultat = momo.replace(exp_reg, "cool");
  alert(resultat);
//aliasdmc coolmomo