| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Guide/Regular_expressions | [Back] [Original] |
Get to know MDN better
Cette page a t traduite partir de l'anglais par la communaut. Vous pouvez contribuer en rejoignant la communaut francophone sur MDN Web Docs.
Les expressions rationnelles sont des motifs utiliss pour correspondre certaines combinaisons de caractres au sein de chanes de caractres. En JavaScript, les expressions rationnelles sont galement des objets. Ces motifs sont utiliss avec les mthodes exec et test de RegExp, et avec les mthodes match, matchAll, replace, replaceAll, search et split de String. Ce chapitre explique comment utiliser les expressions rationnelles en JavaScript (aussi appeles expressions rgulires ou RegExp ).
Il est possible de construire une expression rationnelle de deux faons :
Utiliser un littral d'expression rgulire, qui correspond un motif contenu entre deux barres obliques, par exemple :
var re = /ab+c/;
Lorsque les littraux d'expression rgulire sont utiliss, l'expression est compile lors du chargement du script. Il est prfrable d'utiliser cette mthode lorsque l'expression rgulire reste constante, afin d'avoir de meilleurs performances.
Appeler le constructeur de l'objet RegExp, par exemple :
var re = new RegExp("ab+c");
Avec cette mthode, l'expression rationnelle est compile lors de l'excution. On utilisera cette mthode lorsque le motif utilis est variable ou provient d'une autre source (par exemple une interaction utilisateur).
Le motif d'une expression rationnelle est compos de caractres simples (comme /abc/), ou de caractres simples et spciaux, comme /ab*c/ ou /Chapitre (\d+)\.\d*/. Le dernier exemple utilise des parenthses qui permettent d'avoir une mmoire . La correspondance avec le motif contenu entre parenthses pourra tre utilise par la suite. Ceci est dcrit avec ce paragraphe.
Les motifs simples sont construits partir de caractres pour lesquels on souhaite avoir une correspondance directe. Le motif /des/ correspond lorsqu'on observe exactement les caractres 'des' ensemble et dans cet ordre prcis. On pourrait utiliser ce motif et dtecter une correspondance dans les chanes suivantes : "J'ai vu des licornes ?" et "Sa description de licorne tait superbe" car la chane de caractres 'des' y est prsente (dans le mot description pour le second exemple). Il n'y aura pas de correspondance avec la chane de caractres "Toc toc" car 'des' n'est pas prsente.
Lorsque le motif trouver est plus complexe qu'une simple galit (trouver tous les B, les blancs...), le motif devra contenir des caractres spciaux. Ainsi, le motif /ab*c/ correspond toutes les combinaisons de caractres qui possdent un seul 'a' suivi de zro ou plusieurs 'b' (l'astrisque utilise ici signifie que l'lment qui la prcde doit tre prsent zro ou plusieurs fois) qui sont immdiatement suivis d'un 'c'. Par exemple, la chane de caractre "cbbabbbbcdebc" correspond au motif avec la chane de caractres 'abbbbc'.
Les pages suivantes dcrivent en dtail les caractres spciaux qui peuvent tre utiliss afin de composer une expression rationnelle.
Une assertion caractrisant la faon dont la correspondance peut se produire (en recherchant un motif avant, aprs ou avec une expression conditionnelle).
Permet d'indiquer le dbut ou la fin d'une ligne ou d'un mot.
Les classes permettent de distinguer diffrents caractres selon diffrents groupes (par exemple les lettres et les chiffres).
Permet d'indiquer un groupe ou un intervalle de caractres.
Permet d'indiquer un nombre de caractres ou d'expressions qui doivent correspondre.
Permet de distinguer les caractres en fonction de leurs caractristiques Unicode (majuscule/minuscule, symbole mathmatique, ponctuation).
SI on souhaite rechercher certains caractres dans une chane de caractres et que ceux-ci ont une signification spciale lorsqu'ils font partie d'une expression rationnelle (ex. "*"), il faudra chapper ces caractres spciaux en plaant une barre oblique inverse (backslash "\") devant. Ainsi, si on souhaite trouver un "a" suivi d'un astrisque ("*") suivi d'un "b", on pourra composer l'expression rationnelle : /a\*b/ o la barre oblique inverse chappe l'astrisque afin de lui enlever sa signification particulire.
De mme si on crit un littral d'expression rationnelle et qu'on souhaite rechercher une barre oblique ("/") dans la chane cible, on pourra chapper ce caractre (sinon, il aura sa signification particulire aux expressions rationnelles et indiquera la fin du motif). Si on cherche la prsence de "/exemple/" dans une chane de caractres, on pourra utiliser le littral /\/exemple\//.
Il en va de mme avec la barre oblique inverse (dont la signification spcifique est justement l'chappement) : si on veut rechercher la chane "C:\", on pourra utiliser le motif /C:\\/ (la premire barre oblique inverse sert chapper la seconde).
Lorsqu'on utilise le constructeur RegExp avec une chane de caractres en paramtre (plutt qu'un littral), il faudra chapper la barre oblique inverse qui a un sens particulier dans les chanes de caractres. Ainsi, le littral /a\*b/ et new RegExp("a\\*b") creront la mme expression (qui permet de chercher la lettre "a", suivie d'un astrisque, suivi de la lettre "b").
La tableau qui suit fournit une liste complte des caractres spciaux pouvant tre utiliss dans les expressions rgulires ainsi que leur signification.
| Caractre | Signification |
|---|---|
\ |
Correspond selon les rgles suivantes : |
^ |
Correspond au dbut la squence. Si le marqueur (flag) de
lignes multiples vaut true, il correspondra galement
immdiatement aprs un caractre de saut de ligne.Ainsi, /^A/ ne correspond pas au 'A' de "un A", mais correspond au
'A' de "Arceau".Le caractre ' ^' possde un
sens diffrent lorsqu'il est utilis dans un motif d'ensemble de
caractres. Voir les
complments sur les ensembles de caractres pour plus de dtails et d'exemples.
|
$ |
Correspond la fin de la squence. Si le marqueur (flag) de lignes multiples vaut true, il correspondra galement immdiatement avant un caractre de saut de ligne.
Ainsi, |
* |
Correspond l'expression prcdente qui est rpte 0 ou plusieurs
fois. quivalent
Ainsi, |
+ |
Correspond l'expression prcdente qui est rpte une ou plusieurs
fois. C'est quivalent
Ainsi, |
? |
Correspond l'expression prcdente qui est prsente une fois ou pas du
tout. C'est quivalent {0,1}.Ainsi, /e?le?/ correspond au 'el' dans "gel" et au 'le' dans
"angle" mais aussi au 'l' dans "Oslo".S'il est utilis immdiatement aprs l'un des quantificateurs : *, +, ?, ou {}, il rend le quantificateur moins gourmand auquel cas le moins de caractres correspond (le comportement par dfaut, gourmand , permettant de faire correspondre le plus de caractres possible). Par exemple /\d+/ utilise avec "123abc" fait correspondre "123".
Utiliser /\d+?/ la mme chane de caractres fait
correspondre "1".Ce symbole est galement utilis dans les tests de prsence autour de l'expression, dcrits par les lignes x(?=y) et x(?!y) de ce tableau.
|
. |
Par dfaut, (Le point) correspond n'importe quel caractre except un caractre de saut de ligne.
Ainsi,
Si le marqueur |
(x) |
Correspond 'x' et garde la correspondance en mmoire. Les
parenthses permettent de capturer l'expression dans un
groupe . |
(?:x) |
Correspond 'x' mais ne garde pas la correspondance en mmoire. Les
parenthses ne capturent pas l'expression et permettent
d'utiliser des sous-expressions d'une expression rgulire pour
travailler plus finement. L'expression /(?:zoo){1,2}/ sans
parenthses non-capturantes les caractres {1,2} ne
s'appliqueraient qu'au dernier 'o' de 'zoo'. Avec les parenthses
capturantes, {1,2} s'applique au mot entier 'zoo'. Pour
plus d'informations, voir
Utiliser les parenthses ci-aprs.
|
x(?=y) |
Correspond 'x' seulement s'il est suivi de 'y'. On appelle cela un test de succession (lookahead).
Ainsi, |
x(?!y) |
Correspond 'x' seulement si 'x' n'est pas suivi de 'y'.
Ainsi, |
(?<=y)x
|
Correspond
Ainsi / |
(?<!y)x
|
Correspond
Ainsi, |
x|y |
Correspond 'x' ou 'y'.
Ainsi, |
{n} |
Correspond pour exactement n occurences de l'expression prcdente. N
doit tre un entier positif. Ainsi, /a{2}/ ne
correspond pas au 'a' de "Mozilla" mais correspond tous les 'a' de
"Mozilaa" et aux deux premiers 'a' de "Mozillaaa".
|
{n,} |
Correspond lorsqu'il y a au moins
Par exemple |
{n,m} |
Lorsque
Ainsi, |
[xyz] |
Un ensemble de caractre. Ce type de motif correspond pour n'importe
quel caracttre prsent entre les crochets, y compris les
squences d'chappement. Les caractres spciaux comme le point (.) et l'astrisque ne sont
pas considrs comme spciaux au sein d'un ensemble et n'ont donc pas
besoin d'tre chapps. Il est possible de donner un ensemble sur un
intervalle de caractres en utilisant un tiret (-), comme le montre
l'exemple qui suit. Le motif [a-d], aura les
mmes correspondances que [abcd], correspondant au 'b' de
"bulle" et au 'c' de "ciel". Les motifis /[a-z.]+/ et
/[\w.]+/ correspondront pour la chane entirre :
"Adre.ss.e".
|
[^xyz] |
Exclusion d'un ensemble de caractres. Cela correspond tout ce qui n'est pas compris entre crochets. Il est possible de fournir un intervalle de caractres en utilisant un tiret (-). Les autres rgles qui s'appliquent pour l'ensemble de caractres (ci-avant) s'appliquent galement ici.
Par exemple, |
[\b] |
Correspond pour un retour arrire (U+0008). ( ne pas confondre avec
\b.)
|
\b |
Correspond la position d'une limite de mot. Une
limite de mot correspond la position o un caractre d'un mot n'est
pas suivi ou prcd d'un autre caractre de mot. Il faut savoir que
la limite correspondante n'est pas incluse dans le rsultat. Autrement
dit, la longueur d'une telle correspondance est nulle. ( ne pas
confondre avec
Exemples : Note : Le moteur d'expressions rationnelles JavaScript dfinit un ensemble de caractres spcifiques qui doivent tre considrs comme des caractres de mot. Tout caractre qui n'est pas dans cet ensemble est considr comme une limite de mot. Cet ensemble de caractres est relativement limit car constitu uniquement des caractres de l'alphabet romain en minuscules et en majuscules, des chiffres dcimaux et du tiret-bas (underscore). Les autres caractres, comme les caractres accentus ( ou par exemple), sont donc considrs comme des limites de mots. |
\B |
Correspond une "non-limite de mot". Cela correspond pour les cas suivants :
Ainsi, |
\cX
|
tant donn un caractre X compris entre A et Z, cela correspond au caractre de contrle dans une chane de caractres.
Ainsi, |
\d |
Correspond un chiffre et est quivalent
Ainsi, |
\D |
Correspond tout caractre qui n'est pas un chiffre et est quivalent
Ainsi, |
\f |
Correspond un saut de page (U+000C). |
\n |
Correspond un saut de ligne (U+000A). |
\r |
Correspond un retour chariot (U+000D). |
\s |
Correspond un blanc (cela comprend les espace, tabulation, saut de
ligne ou saut de page). C'est quivalent
Ainsi, |
\S |
Correspond un caractre qui n'est pas un blanc. C'est quivalent
Ainsi, |
\t |
Correspond une tabulation (U+0009). |
\v |
Correspond une tabulation verticale (U+000B). |
\w |
Correspond n'importe quel caractre alphanumrique, y compris le
tiret bas. C'est quivalent
Ainsi, |
\W |
Correspond n'importe quel caractre n'tant pas un caractre de mot.
Cela est quivalent
Ainsi, |
\n |
Soit n un entier strictement positif, cela fait rfrence au groupe de la n-ime expression entre parenthses (en comptant les parenthses ouvrantes).
Ainsi, |
\0 |
Correspond au caractre NULL (U+0000). Il ne doit pas tre suivi d'un
autre chiffre car \0<chiffres> est une
squence d'chappement
pour les nombres en notation octale (si besoin d'utiliser un chiffre
ensuite, on pourra utiliser la forme \x00, cf. ci-aprs).
|
\xhh |
Correspond au caractre dont le code hexadcimal est hh (deux chiffres hexadcimaux). |
\uhhhh |
Correspond au caractre dont le code est hhhh (quatre chiffres hexadcimaux). |
\u{hhhh} |
(Uniquement actif quand le marqueur u est activ)
Correspond au caractre dont la valeur Unicode est hhhh (en
chiffre hexadcimaux).
|
Afin d'chapper les informations saisies par l'utilisateur et de trater les chanes de caractres pour les utiliser au sein d'un expression rgulire correspondante, il est possible d'utiliser le remplacement suivant :
function escapeRegExp(string) {
// $& correspond la chane correspondante
// dans son intgralit
return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
}
Le marqueur g situ en fin d'expression permet d'effectuer une recherche globale, qui parcoure toute la chane et renvoie l'ensemble des correspondances trouves (voir Utiliser les marqueurs ci-aprs).
Note :
Voir la page sur la mthode String.replace pour plus d'informations.
Les parenthses encadrant une partie du motif de l'expression rgulire peuvent tre utilises pour garder en mmoire les correspondances. Cela pourra tre utile pour rutiliser la correspondance trouve.
Ainsi, le motif /Chapitre (\d+)\.\d*/ utilise des caractres chapps et spciaux et indique une partie du motif garder en mmoire. Ce motif correspond aux caractres 'Chapitre ' suivi par un ou plusieurs caractres numriques (\d correspond un chiffre et + indiquant que une srie de 1 ou plusieurs chiffres), suivis par un point (qu'il est ncessaire d'chapper car c'est un caractre spcial, on utilise donc '\' pour indiquer qu'on souhaite reconnatre le caractre '.'), suivi par 0 ou plusieurs chiffres (\d correspondant un chiffre et l'astrisque indiquant que le caractre est prsent 0 ou plusieurs fois). Les parenthses sont utilises pour garder en mmoire les premiers chiffres correspondant.
Ce motif est trouv dans "Ouvrir le Chapitre 4.3 au paragraphe 6" et le chiffre '4' est gard en mmoire. Le motif n'est pas trouv dans "Chapitre 3 et 4", car la chane de caractres ne comporte pas de point aprs le '3'.
Pour qu'une partie de la chane de caractre corresponde mais que la correspondance ne soit pas garde en mmoire, on pourra utiliser ?:. Ainsi, (?:\d+) correspondra pour une squence de chiffres (1 ou plusieurs chiffres) mais on ne gardera pas en mmoire les caractres correspondants.
Les expresssions rgulires sont utilises avec les mthodes test() et exec() de l'objet RegExp et avec les mthodes match(), matchAll(), replace(), replaceAll(), search(), et split().
de l'objet String. Ces mthodes sont expliques en dtail dans la Rfrence JavaScript.
| Mthode | Description |
|---|---|
exec |
Une mthode de l'objet RegExp qui excute une recherche de correspondance dans une chane de caractres. Elle renvoie un tableau d'informations ou null lorsqu'il n'y a pas de correspondance. |
test |
Une mthode de l'objet RegExp testant la prsence d'une correspondance dans une chane de caractres. Elle renvoie true ou false. |
match |
Une mthode de l'objet String qui excute une recherche de correspondance dans une chane de caractres. Elle renvoie un tableau d'informations ou null lorsqu'il n'y a pas de correspondance. |
matchAll |
Une mthode de l'objet String qui renvoie un itrateur contenant l'ensemble des correspondances, y compris les groupes capturants. |
replace |
Une mthode de l'objet String qui recherche une correspondance dans une chane de caractres et qui remplace la correspondance par une chane de substitution. |
replaceAll |
Une mthode de l'objet String qui recherche toutes les correspondances dans une chane de caractres et qui remplace chaque correspondance par une chane de substitution. |
search |
Une mthode de l'objet String qui teste la prsence d'une correspondance dans une chane de correspondance. Elle renvoie la position de la correspondance ou -1 s'il n'y en a pas. |
split |
Une mthode de l'objet String qui utilise une expression rgulire ou une chane de caractres pour dcouper une chane de caractres en un tableau comprenant les fragments rsultants. |
Pour savoir si un motif est prsent au sein d'une chane de caractres, utiliser les mthodes test ou search. Pour obtenir plus d'informations (moins rapidement) on utilisera les mthodes exec ou match. Si on utilise exec ou match et qu'une correspondance est trouve, ces mthodes renverront un tableau et mettront jour des proprits de l'objet global RegExp et aussi de l'instance de RegExp associe l'expression rationnelle. Si aucune correspondance n'est trouve, la mthode exec renverra null (qui est automatiquement converti false lors d'un test conditionnel).
Dans l'exemple qui suit, le script utilise la mthode exec pour trouver une correspondance dans une chane de caractres.
var monExpressionReguliere = /d(b+)d/g;
var monTableau = monExpressionReguliere.exec("cdbbdbsbz");
S'il n'est pas ncessaire d'accder aux proprits de l'expression rgulire, une autre faon de rcuprer monTableau peut tre :
var monTableau = /d(b+)d/g.exec("cdbbdbsbz");
// quivalent "cdbbdbsbz".match(/d(b+)d/g);
Si on souhaite construire une expression rgulire partir d'une chane de caractres, on peut utiliser le script suivant :
var monExpressionReguliere = new RegExp("d(b+)d", "g");
var monTableau = monExpressionReguliere.exec("cdbbdbsbz");
Avec ces scripts, on obtient bien une correspondance, la mthode renvoie un tableau et met jour les proprits listes dans le tableau qui suit.
| Objet | Proprit ou indice | Description | Pour cet exemple |
|---|---|---|---|
monTableau |
La chane de caractres correspondante et les fragments de chanes gards en mmoire. | ["dbbd", "bb"] |
|
index |
L'indice (dbute partir de 0) de la correspondance, compt dans la chane de caractre initiale. | 1 |
|
input |
La chane de caractres initiale. | "cdbbdbsbz" |
|
[0] |
Les derniers caractres qui correspondent. | "dbbd" |
|
monExpressionRgulire |
lastIndex |
L'indice auquel dbuter la prochaine correspondance. (Cette proprit n'est utilise que si l'expression rgulire utilise l'option g, dcrite dans Effectuer des recherches avances avec les marqueurs . | 5 |
source |
Le texte du motif, mis jour la cration de l'expression rgulire mais pas lors de son excution. | "d(b+)d" |
Comme le montre la seconde formulation de cet exemple, il est possible d'utiliser une expression rationnelle, cre avec un objet initialis sans l'affecter une variable. Cela implique qu' chaque utilisation, on aura une nouvelle expression rgulire distincte et qu'on ne pourra pas, pour cette raison, accder aux proprits de l'expression rgulire. Avec le script suivant :
var monExpressionReguliere = /d(b+)d/g;
var monTableau = monExpressionReguliere.exec("cdbbdbsbz");
console.log("La valeur de lastIndex est " + monExpressionReguliere.lastIndex);
// "La valeur de lastIndex est 5"
Si le script utilis est :
var monTableau = /d(b+)d/g.exec("cdbbdbsbz");
console.log("La valeur de lastIndex est " + /d(b+)d/g.lastIndex);
// "La valeur de lastIndex est 0"
Les occurences de /d(b+)d/g dans les deux instructions sont des objets diffrents. Leurs proprits lastIndex respectives ont donc des valeurs diffrentes. Quand il est ncessaire d'accder aux proprits d'un objet dcrivant une expression rationnelle, il faudra d'abord l'affecter une variable.
Les parenthses, utilises dans un motif d'expression rgulire, permettent de garder en mmoire un groupe (ou fragment) d'une correspondance. Ainsi, /a(b)c/ correspond aux caractres 'abc' et garde 'b' en mmoire. Pour rcuprer ces fragments mmoriss, on peut utiliser les lments du tableau array [1], ..., [n].
Le nombre de fragments qu'il est possible de garder entre parenthses n'est pas limit. Le tableau renvoy contiendra tout ce qui aura t trouv. Les exemples qui suivent montrent comment utiliser cette syntaxe.
Le script qui suit utilise la mthode replace() pour changer les mots d'une chane de caractres. Pour remplacer le texte, le script utilise $1 et $2 qui correspondent au premier et deuxime groupe correspondant.
var re = /(\w+)\s(\w+)/;
var str = "Titi toto";
var newstr = str.replace(re, "$2, $1");
console.log(newstr);
Cela affichera "toto, Titi".
Les expressions rationnelles peuvent tre utilises avec des marqueurs optionnels permettant des recherches globales et/ou ne respectant pas la casse. Ces marqueurs peuvent tre utiliss sparement ou ensemble, quel que soit l'ordre. Ils font partie de l'expression rgulire.
| Drapeau (Flag) | Description |
|---|---|
g |
Recherche globale |
i |
Recherche ne respectant pas la casse |
m |
Recherche sur plusieurs lignes |
s |
Le point peut correspondre aux caractres de saut de ligne. |
u |
Unicode. Le motif de recherche est interprt comme une squence de codets Unicode. |
y |
Effectue une recherche qui adhre , en partant de la position courante de la chane de caractres sur laquelle la recherche est effectue. Voir la page sur sticky. |
Pour utiliser un marqueur avec une expression rgulire, on utilisera la syntaxe suivante :
var re = /motif/marqueurs;
ou
var re = new RegExp("motif", "marqueurs");
Les marqueurs font partie intgrante d'une expression rgulire, ils ne peuvent pas tre ajouts ou supprims ensuite.
Ainsi, re = /\w+\s/g permet de crer une expression rgulire pour trouver un ou plusieurs caractres suivis d'un espace, la recherche est effectue globalement, sur toute la chane de caractres.
var re = /\w+\s/g;
var str = "un deux trois quatre";
var monTableau = str.match(re);
console.log(monTableau);
Cela affichera ["un ", "deux ", "trois "]. On pourrait remplacer la ligne :
var re = /\w+\s/g;
avec la ligne :
var re = new RegExp("\\w+\\s", "g");
pour obtenir le mme rsultat.
Le comportement du marqueur 'g' est diffrent selon qu'il est utilis avec exec() ou avec match(). Pour match(), c'est la chane de caractres qui invoque la mthode et l'expression rationnelle est alors un argument. Pour exec(), c'est l'expression rationnelle qui invoque la mthode et c'est la chane de caractres qui est passe en argument. Dans l'appel exec(), le marqueur 'g' permet d'avoir une progression itrative.
Le marqueur m pourra tre utilis pour traiter une chane de caractres de plusieurs lignes comme plusieurs lignes distinctes. Si ce marqueur est utilis, les caractres spciaux ^ et $ correspondront au dbut ou la fin de n'importe quelle ligne appartenant la chane de caractres au lieu de correspondre simplement au dbut ou la fin de la chane.
Les exemples qui suivent utilisent les expressions rgulires dans diffrents cas.
L'exemple qui suit utilise les expressions rgulires et string.split() et string.replace(). Le script nettoie la chane de caractres saisie qui contient des noms (prnom puis nom) spars par des blancs, tabulations et points-virgules. Enfin il inverse les noms et prnoms puis trie la liste.
// La chane des noms contient plusieurs blancs et tabulations,
// il peut y avoir plusieurs espaces entre le nom et le prnom.
var noms = "Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ; Chris Hand ";
var output = ["---------- Chane originale\n", noms + "\n"];
// Prparer deux expressions rgulires pour stocker un tableau.
// et dcouper les chanes dans ce tableau.
// motif: on peut avoir des blancs, un point virgule puis d'autres blancs
var motif = /\s*;\s*/;
// Dcouper la chane de caractres en morceaux spars par le prcdent motif
// Stocker ces morceaux dans un tableau listeNoms
var listeNoms = noms.split(motif);
// nouveau motif : un ou plusieurs caractres, des blancs puis des caractres.
// On utilise des parenthses pour garder en mmoire les groupes du motif.
// On utilisera ces groupes par la suite.
motif = /(\w+)\s+(\w+)/;
// Nouveau tableau pour enregistrer les noms traits.
var listeParNomFamille = [];
// Afficher le tableau des noms et remplir le nouveau tableau
// avec les noms et prnoms spars par des virgules, le nom
// de famille tant crit en premier
//
// La mthode replace supprime tout ce qui correspond au motif
// et le remplace par le nom (mmoris), une virgule, un espace
// et le prnom (mmoris).
//
// Les variables $1 et $2 font rfrences aux fragments gards
// en mmoire lors de l'utilisation du motif.
output.push("---------- Aprs dcoupage avec l'expression rgulire");
var i, len;
for (i = 0, len = listeNoms.length; i < len; i++) {
output.push(listeNoms[i]);
listeParNomFamille[i] = listeNoms[i].replace(motif, "$2, $1");
}
// Afficher le nouveau tableau
output.push("---------- Noms et prnoms inverss");
for (i = 0, len = listeParNomFamille.length; i < len; i++) {
output.push(listeParNomFamille[i]);
}
// Trier par le nom de famille puis afficher le tableau tri
listeParNomFamille.sort();
output.push("---------- Trie");
for (i = 0, len = listeParNomFamille.length; i < len; i++) {
output.push(listeParNomFamille[i]);
}
output.push("---------- Fin");
console.log(output.join("\n"));
Dans l'exemple suivant, on s'attend ce que l'utilisateur saisissent un numro de tlphone. Quand l'utilisateur appuie sur le bouton "Vrifier", le script vrifie la validit du numro. Si le numro est valide (il correspond la squence de caractres fournie par l'expression rgulire), le script affiche un message remerciant l'utilisateur et confirmant le numro. S'il est invalide, le script informe l'utilisateur et lui signifie que les informations saisies ne sont pas valides.
Dans les parenthses sans mmoire (?: , l'expression rgulire cherche les deux premiers chiffres ou l'indicatif du pays suivi d'un blanc et du premier chiffre, ce qui correspond
\d{2}|\+\d{2}[ ]\d
Cette partie signifie : deux chiffres OU un signe '+' suivi de deux chiffres, un blanc et un autre chiffre.
Ensuite, on a un groupe qui est mmoris (entre parenthses) :
([- ])
Ce groupe correspond ce qui va tre utilis pour sparer les diffrentes composantes du numro de tlphone.
Ensuite,
\d{2}\1
signifie qu'on a deux chiffres suivi du premier groupe qui est celui qui dfinit le sparateur. Le reste est compos de la mme faon. Ainsi les numros de tlphone +33 1 23 45 67 89 et 01 23 45 67 89 seront tous les deux valides.
L'vnement Change, provoqu quand l'utilisateur appuie sur Entre, renseigne la valeur RegExp.input.
<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<script type="text/javascript">
var re = /(?:\d{2}|\+\d{2}[ ]\d)([- ])\d{2}\1\d{2}\1\d{2}\1\d{2}/;
function testInfo(phoneInput) {
var OK = re.exec(phoneInput.value);
if (!OK)
window.alert(
phone.input + " n'est pas un numro de tlphone valide!",
);
else window.alert("Merci, votre numro est : " + OK[0]);
}
</script>
</head>
<body>
<p>
Saisissez votre numro de tlphone (avec indicatif) puis cliquez sur
"Vrifier". <br />Le format attendu est ## ## ## ## ## ou +## # ## ## ##
##.
</p>
<form action="#">
<input id="phone" /><button
>
Vrifier
</button>
</form>
</body>
</html>
Cette page a t modifie le 13 mai 2026 par les contributeurices du MDN.
Certaines parties de ce contenu sont protges par le droit d'auteur 19982026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.
| Web Proxy Viewer | New URL | Original Page |