1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
|
---
title: Groupes et intervalles
slug: Web/JavaScript/Guide/Regular_Expressions/Groups_and_Ranges
tags:
- Groupes
- Guide
- Intervalles
- JavaScript
- RegExp
translation_of: Web/JavaScript/Guide/Regular_Expressions/Groups_and_Ranges
original_slug: Web/JavaScript/Guide/Expressions_régulières/Groupes_et_intervalles
---
{{jsSidebar("JavaScript Guide")}}{{draft}}
Les groupes et intervalles permettent de représenter des groupes ou des intervalles de caractères dans des expressions rationnelles.
## Types
<table class="standard-table">
<thead>
<tr>
<th scope="col">Caractères</th>
<th scope="col">Signification</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>x|y</code></td>
<td>
<p>Correspond à 'x' ou 'y'.</p>
<p>
Ainsi, <code>/vert|rouge/</code> correspond à 'vert' dans "feu vert"
et à 'rouge' dans "feu rouge".
</p>
</td>
</tr>
<tr>
<td><code>[xyz]</code> ou <code>[a-c]</code></td>
<td>
Un ensemble de caractère. Ce type de motif correspond pour n'importe
quel caractètre présent entre les crochets, y compris les
<a
href="/fr/docs/Web/JavaScript/Guide/Types_et_grammaire#Les_caractères_d'échappement"
>séquences d'échappement</a
>. Les caractères spéciaux comme le point (.) et l'astérisque ne sont
pas considérés comme spéciaux au sein d'un ensemble et n'ont donc pas
besoin d'être échappés. Il est possible de donner un ensemble sur un
intervalle de caractères en utilisant un tiret (-), comme le montre
l'exemple qui suit.<br /><br />Le motif <code>[a-d]</code>, aura les
mêmes correspondances que <code>[abcd]</code>, correspondant au 'b' de
"bulle" et au 'c' de "ciel". Les motifis <code>/[a-z.]+/ </code>et
<code>/[\w.]+/</code> correspondront pour la chaîne entirère :
"Adre.ss.e".
</td>
</tr>
<tr>
<td>
<p><code>[^xyz]</code> ou <code>[^a-c]</code></p>
</td>
<td>
<p>
Exclusion d'un ensemble de caractères. Cela correspond à tout ce qui
n'est pas compris entre crochets. Il est possible de fournir un
intervalle de caractères en utilisant un tiret (-). Les autres règles
qui s'appliquent pour l'ensemble de caractères (ci-avant) s'appliquent
également ici.
</p>
<p>
Par exemple, <code>[^abc]</code> est équivalent à <code>[^a-c]</code>.
Ils correspondent à 'u' dans "bulle" et à 'i' dans "ciel".
</p>
<div class="note">
<p>
<strong>Note :</strong> Le caractère <code>^</code> peut également
être utilisé afin d'indiquer le
<a
href="/fr/docs/Web/JavaScript/Guide/Expressions_régulières/Limites"
>début d'un champ</a
>.
</p>
</div>
</td>
</tr>
<tr>
<td><code>(x)</code></td>
<td>
<p>
Correspond à 'x' et garde la correspondance en mémoire. Les
parenthèses permettent de <em>capturer </em>l'expression dans un «
groupe ».<br /><br />Les '<code>(toto)</code>' et
'<code>(truc)</code>', dans le motif
<code>/(toto) (truc) \1 \2/</code> correspondent et gardent en mémoire
les deux premiers mots de la chaîne de caractère "toto truc toto
truc". Les <code>\1</code> et <code>\2</code> du motif correspondent
respectivement à la première et à la deuxième correspondances pour les
sous-chaînes entre parenthèses. Lorsqu'on souhaite effectuer un
remplacement, on utilisera <code>$1</code> et <code>$2</code> pour
faire référence au premier et second groupe et <code>$</code
><code>n </code>pour faire référence au n-ième groupe capturé (ex.
<code>('toto truc'.replace(/(...) (...)/, '$2 $1').</code>
<code>$&</code> fera référence à la chaîne entière).
</p>
<p>
Capturing groups have a performance penalty. If you don't need the
matched substring to be recalled, prefer non-capturing parentheses
(see below).
</p>
<p>
<code
><a
href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match"
>String.match()</a
></code
>
won't return groups if the <code>/.../g</code> flag is set. However,
you can still use
<code
><a
href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/matchAll"
>String.matchAll()</a
></code
>
to get all matches.
</p>
</td>
</tr>
<tr>
<td><code>\n</code></td>
<td>
<p>
Avec <code><em>n</em></code> un entier positif. Cela permet de faire
référence à la dernière sous-chaîne qui correspond au n-ième groupe
entre parenthèses de l'expression rationnelle (en comptant les
parenthèses gauche). Ainsi,
<code>/apple(,)\sorange\1/</code> correspondra à "apple, orange," dans
"apple, orange, cherry, peach".
</p>
</td>
</tr>
<tr>
<td><code>(?<Nom>x)</code></td>
<td>
<p>
Correspond à <code>x</code> et nomme la correspondance. Les
correspondances associées pourront être retrouvées via le nom indiqué.
Les chevrons (<code>'<'</code> et <code>'>'</code>) sont
obligatoires pour encadrer le nom.
</p>
<p>
Ainsi, si on veut extraire la composante de zone d'un numéro de
téléphone aux États-Unis, on pourra écrire
<code>/\((?<area>\d\d\d)\)/</code> et récupérer le nombre voulu
avec <code>matches.groups.area</code>.
</p>
</td>
</tr>
<tr>
<td><code>(?:<em>x</em>)</code></td>
<td>
Correspond à 'x' mais ne garde pas la correspondance en mémoire. Les
parenthèses ne <em>capturent</em> pas l'expression et permettent
d'utiliser des sous-expressions d'une expression régulière pour
travailler plus finement. L'expression <code>/(?:zoo){1,2}/</code> sans
parenthèes non-capturantes <code>les caractères {1,2}</code> ne
s'appliqueraient qu'au dernier 'o' de 'zoo'. Avec les parenthèses
capturantes, <code>{1,2}</code> s'applique au mot entier 'zoo'.
</td>
</tr>
</tbody>
</table>
> **Note :** Firefox ne prend pas en charge les groupes nommés. Pour plus d'informations, voir [le bug correspondant](https://bugzilla.mozilla.org/show_bug.cgi?id=1362154).
|