Expression régulière 2 - Cours Javascript

Les caractères de répétitions

Définitions *, +, ?

Les caractères *, +, ? et {} sont des caractères spéciaux. Ils permettent de spécifier les répétitions des caractères.

Le caractère * signifie que le caractère qui le précède est répété aucune fois ou plusieurs fois.

"dmc+": chaîne qui contient "dm" suivie d'aucun ou plusieurs "c" ("dm", "dmc", "dmcc",...).

Equivalant à "{0,}".
Exemple de code :
var momo = "0_dm 1_dmc 2_dmcc 3_dmccc 4_dma";
var exp_reg = /\d_dmc*/gi;
var resultat = momo.match(exp_reg);
for(var i=0; resultat!=null && i<resultat.length; i++){
    alert(resultat[i]);
}
//0_dm
//1_dmc
//2_dmcc
//3_dmccc
//4_dm

Le caractère + signifie que le caractère qui le précède est répété une fois ou plusieurs fois.

"dmc+": chaîne qui contient "dm" suivie de un ou plusieurs "c" ("dmc", "dmcc", "dmccc",...).

Equivalant à "{1,}".
Exemple de code :
var momo = "0_dm 1_dmc 2_dmcc 3_dmccc 4_dma";
var exp_reg = /\d_dmc+/gi;
var resultat = momo.match(exp_reg);
for(var i=0; resultat!=null && i<resultat.length; i++){
    alert(resultat[i]);
}
//1_dmc
//2_dmcc
//3_dmccc

Le caractère ? signifie que le caractère qui le précède est répété aucune fois ou une fois.

"dmc?": chaîne qui contient "dmc" suivie d'aucun ou d'un "c" ("dmc", "dmcc", "dmccc",...).

Equivalant à "{0,1}".
Exemple de code :
var momo = "0_dm 1_dmc 2_dmcc 3_dmccc 4_dma";
var exp_reg = /\d_dmc?/gi;
var resultat = momo.match(exp_reg);
for(var i=0; resultat!=null && i<resultat.length; i++){
    alert(resultat[i]);
}
//0_dm
//1_dmc
//2_dmc
//3_dmc
//4_dm

Définitions {}

Les accolades {début,fin} est un autre moyen de donner des limites au nombre de répétitions du caractère qui les précèdes.

- début, peut prendre la valeur de 0 et plus. Valeur obligatoire.
- fin, peut prendre la valeur de 0 et plus. Valeur facultative. Dans ce cas ne rien mettre {0,}
Exemple de code :
var momo = "0_dm 1_dmc 2_dmcc 3_dmccc 4_dma";
var exp_reg = /\d_dmc{1,3}/gi;
var resultat = momo.match(exp_reg);
for(var i=0; resultat!=null && i<resultat.length; i++){
    alert(resultat[i]);
}
//1_dmc
//2_dmcc
//3_dmccc

Les regroupements

Les parenthèses

Les parenthèses () vont vous permettre de regrouper un motif.
Exemple de code :
var momo = "aliasdmc.fr";
var exp_reg = /((a.*)(d.*)\.)(org|fr)/gi;
var resultat = momo.match(exp_reg);
for(var i=0;resultat!=null && i<resultat.length;i++){
    alert(resultat[i]);
}
//aliasdmc.org

En utilisant les parenthèses () on pourra ensuite référencer dans le paramètre remplacement par les caractères $1, $2,...,$9.
Exemple de code :
var momo = "aliasdmc.fr";
var exp_reg = /((a.*)(d.*)\.)(org|fr)/gi;
alert(momo.replace(exp_reg,"$9|$8|$7|$6|$5|$4|$3|$2|$1"));
//$9|$8|$7|$6|$5|fr|dmc|alias|aliasdmc.

Ingnore ce regroupement

L'exepression "(?:chaîne)" permet d'exclure un regroupement du tableau de résultats ou des propriétés prédéfinies $1,...
Exemple de code :
var momo = "aliasdmc.fr";
var exp_reg = /((a.*)(d.*).)(?:org|fr)/gi;
alert(momo.replace(exp_reg,"$9|$8|$7|$6|$5|$4|$3|$2|$1"));
//$9|$8|$7|$6|$5|$4|dmc|alias|aliasdmc.

Opérateur OU

Le caractères spécial | permet d'insérer une condition, il se comporte en tant qu'opérateur OU.
Exemple de code :
var momo = "aliasdmc.fr aliasdmc.com aliasdmc.org ";
var exp_reg = /(aliasdmc)\.(com|org)/gi;
var resultat = momo.match(exp_reg);
for(var i=0;resultat!=null && i<resultat.length;i++){
    alert(resultat[i]);
}
//aliasdmc.com
//aliasdmc.org

Liste de caractères

Les crochets [ ]

Les crochets [ ] permettent de spécifier une liste de caractères autorisés.
Exemple de code :
var momo = "0_dma 1_dmb 2_dmc 3_dmd 4_dme";
var exp_reg = /\d_dm[ab]/gi;
var resultat = momo.match(exp_reg);
for(var i=0;resultat!=null && i<resultat.length;i++){
    alert(resultat[i]);
}
//0_dma
//1_dmb

Les crochets [^ ] permettent de spécifier une liste de caractères interdits.
Exemple de code :
var momo = "0_dma 1_dmb 2_dmc 3_dmd 4_dme";
var exp_reg = /\d_dm[^ab]/gi;
var resultat = momo.match(exp_reg);
for(var i=0;resultat!=null && i<resultat.length;i++){
    alert(resultat[i]);
}
//2_dmc
//3_dmd
//4_dme

Le caractère spécial -

Le caractères spécial - sert à définir un intervalle dans les crochets [ ].

"[a-z]" correspond aux lettres minuscules de a à z.
"[A-Z]" correspond aux lettres majuscules de A à Z dans ce cas faites attention au type (g,i) que vous avez mis.
"[a-zA-Z]" correspond aux lettres minuscules et majuscules de a à z.
"[0-9]" correspond aux chiffres de 1 à 9.
Exemple de code :
var momo = "0_dma 1_dmb 2_dmc 3_dmd 4_dme";
var exp_reg = /\d_dm[a-d]/gi;
var resultat = momo.match(exp_reg);
for(var i=0;resultat!=null && i<resultat.length;i++){
    alert(resultat[i]);
}
//0_dma
//1_dmb
//2_dmc
//3_dmd

Caractère prédéfini

Les caractères prédéfinis

Il existe des caractères spéciaux qui engloblent des caractères d'un certain type (numérique, alphanumérique, ...) mais qui ne sont pas des classes.
Simplification Description
s Tout caractère de césure équivaut à [ trnfv]
S Aucun caractère de césure équivaut à [^ trnfv]
w Tout caractère alphanumérique équivaut à [a-zA-z0-9]
W Aucun caractère alphanumérique équivaut à [^a-zA-z0-9]
d Tout chiffre (décimal) équivaut à [0-9]
D Aucun chiffre (décimal) équivaut à [^0-9]
f Saut de page
n Alinéa
t Tabulation horizontale
v Tabulation verticale
r Retour chariot

C'est du php et pas javascript

Vous verrez peut être ce type [::] d'écriture.
Ce sont des raccourcis appelés classes qui engloblent des caractères d'un certain type (numérique, alphanumérique, ...).
Mais attention, c'est du PHP et non du javascript.
Nom de la classe Description
[:alnum:] caractères alphanumériques (équivalant à[A-Za-z0-9])
[:alpha:] caractères alphabétiques (équivalant à [A-Za-z])
[:blank:] caractères blanc (espace ou tabulation)
[:ctrl:] caractères de contrôle
[:digit:] chiffre (équivalant à [0-9])
[:graph:] caractère imprimable sauf l'espace.
[:print:] Un caractère imprimable y compris l'espace (qui passe à l'imprimante ... tout sauf les caractères de contrôle)
[:punct:] caractère de ponctuation (tout caractère imprimable qui ne soit pas alphanumérique ou un espace)
[:space:] caractère d'espacement (espace, tabulation, saut de ligne ou de page)
[:upper:] caractère majuscule
[:xdigit:] caractère hexadécimal (0-9, a-f, A-F)