You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Cette regexp loin d'être parfaite, fonctionne dans une majorité de cas et aide à corriger d'éventuelles fautes de frappes. La seule vérification fiable à 100% pour un email est effectuée par l'envoi d'un courrier.
65
65
66
-
## Contenus des parenthèses dans la correspondance
66
+
## Les contenus de parenthèses dans la correspondance
67
67
68
68
Les parenthèses sont numérotées de gauche à droite. Le moteur de recherche mémorise le contenu correspondant à chacune d'entre elles et permet d'y accéder dans le résultat.
69
69
@@ -93,19 +93,19 @@ alert( tag[1] ); // h1
93
93
94
94
Les parenthèses peuvent être imbriquées. Dans ce cas la numérotation se fait aussi de gauche à droite.
95
95
96
-
Par exemple, en effectuant une recherche dans la balise `subject:<span class="my">` nous pourrions est intéressé par :
96
+
Par exemple, en effectuant une recherche dans la balise `subject:<span class="my">` nous pourrions être intéressé par :
97
97
98
98
1. Son contenu complet : `match:span class="my"`.
99
99
2. Son nom : `match:span`.
100
100
3. Ses attributs : `match:class="my"`.
101
101
102
-
Ajoutons-leur des parenthèses : `pattern:<(([a-z]+)\s*([^>]*))>`.
102
+
Entourons-les de parenthèses : `pattern:<(([a-z]+)\s*([^>]*))>`.
103
103
104
-
Voici comment ils sont numérotés (gauche à droite, par ordre d'ouverture) :
104
+
Voici comment les groupes sont numérotés(de gauche à droite, par ordre d'ouverture des parenthèses) :
105
105
106
106

107
107
108
-
En action:
108
+
Ce qui donne :
109
109
110
110
```js run
111
111
let str ='<span class="my">';
@@ -119,9 +119,9 @@ alert(result[2]); // span
119
119
alert(result[3]); // class="my"
120
120
```
121
121
122
-
L'index zero de `result` contient toujours l'entière correspondance.
122
+
L'index zero de `result` contient toujours l'entière correspondance, puis les groupes, numérotés de gauche à droite par ordre d'ouverture des parenthèses.
123
123
124
-
Puis les groupes, numérotés de gauche à droite par ordre d'ouverture des parenthèses. Le premier groupe est retourné comme`result[1]`. Il enferme ici tout le contenu de la balise.
124
+
Le premier groupe est retourné par`result[1]`. Il contient ici tout l'intérieur de la balise.
125
125
126
126
Puis dans `result[2]` se trouve le groupe de la deuxième parenthèse ouvrante `pattern:([a-z]+)` - le nom de balise, puis dans `result[3]` la suite de la balise : `pattern:([^>]*)`.
results =Array.from(results); //let's turn it into array
206
+
results =Array.from(results); //convertissons-le en tableau
207
207
208
208
alert(results[0]); // <h1>,h1 (1st tag)
209
209
alert(results[1]); // <h2>,h2 (2nd tag)
@@ -242,19 +242,19 @@ alert( tag1.index ); // 0
242
242
alert( tag1.input ); // <h1> <h2>
243
243
```
244
244
245
-
```smart header="Pourquoi le résultat d'un `matchAll` un itérateur, et pas un tableau ?"
245
+
```smart header="Pourquoi le résultat d'un `matchAll`est un itérateur et pas un tableau ?"
246
246
Pourquoi la méthode est-elle conçue comme cela ? La raison est simple - pour l'optimisation.
247
247
248
248
L'appel à `matchAll` n'effectue pas la recherche. À la place, il retourne un itérateur, sans résultats préalables. La recherche est lancée à chaque fois que nous l'itérons, par ex. dans une boucle.
249
249
250
250
Ne seront donc trouvés qu'autant de résultats que besoin, pas plus.
251
251
252
-
Par ex. il y a 100 correspondances potentielles dans un texte, mais dans une boucle `for..of` nous en trouvons 5, et décidons alors que c'est suffisant et faisons un `break`. Le moteur de recherche ne perdra pas son temps à rechercher les 95 autres correspondances.
252
+
Par ex. s'il y a 100 correspondances potentielles dans un texte, mais dans une boucle `for..of` nous en trouvons 5, et décidons alors que c'est suffisant en faisant un `break`. Le moteur de recherche ne perdra pas son temps à rechercher les 95 autres correspondances.
253
253
```
254
254
255
255
## Groupes nommés
256
256
257
-
Il est difficile de se souvenir de groupes par leur numéro. Bien que faisable pour des motifs simples, cela devient ardu dans des motifs plus complexes. Nous avons une bien meilleure option : nommer les parenthèses.
257
+
Il est difficile de se souvenir de groupes par leur numéro. Bien que faisable pour des motifs simples, cela devient ardu dans des motifs plus complexes. Il existe une meilleure option : nommer les parenthèses.
258
258
259
259
Cela se fait en mettant `pattern:?<name>` immédiatement après la parenthèse ouvrante.
Nous avons parfois besoin de parenthèses pour appliquer correctement un quantificateur, sans avoir besoin de leurs contenu dans les résultats.
327
327
328
-
Un groupe peut en être exclu en ajoutant `pattern:?:` au début.
328
+
Un groupe peut être exclu des résultats en ajoutant `pattern:?:` au début.
329
329
330
330
Par exemple, si nous voulons trouver `pattern:(go)+`, sans avoir les contenus des parenthèses (`go`) comme élément du tableau de correspondance, nous pouvons écrire : `pattern:(?:go)+`.
331
331
@@ -348,17 +348,17 @@ alert( result.length ); // 2 (pas d'autres éléments dans le tableau)
348
348
349
349
## Résumé
350
350
351
-
Les parenthèses regroupent ensemble une partie de l'expression régulière, de telle sorte qu'un quantificateur s'applique à tout cet ensemble.
351
+
Les parenthèses regroupent ensemble une partie de l'expression régulière, de telle sorte qu'un quantificateur s'applique à toute cette partie.
352
352
353
-
Les groupes de parenthèses son numérotés de gauche à droite, et peuvent éventuellement être nommés avec `(?<name>...)`.
353
+
Les groupes de parenthèses sont numérotés de gauche à droite et peuvent éventuellement être nommés avec `(?<name>...)`.
354
354
355
355
Le contenu correspondant à un groupe, peut être obtenu dans les résultats :
356
356
357
-
- La méthode `str.match` retourne les groupes capturant seulement sans le marqueur `pattern:g`.
357
+
- La méthode `str.match` retourne les groupes capturant uniquement en l'absence du marqueur `pattern:g`.
358
358
- La méthode `str.matchAll` retourne toujours les groupes capturant.
359
359
360
-
Si les parenthèses n'ont pas de nom, alors leur contenu est dans le tableau de correspondances par son numéro. Les parenthèses nommées sont disponibles aussi par la propriété `groups`.
360
+
Si les parenthèses n'ont pas de nom, alors leur contenu est dans le tableau de correspondances indexé par leur ordre d'ouverture. Les parenthèses nommées sont disponibles aussi par la propriété `groups`.
361
361
362
-
Nous pouvons aussi utiliser les contenus des parenthèses dans la chaine de remplacement de `str.replace`: par leur numéro `$n` ou leur nom `$<name>`.
362
+
Nous pouvons aussi utiliser les contenus des parenthèses dans la chaîne de remplacement de `str.replace`: par leur numéro `$n` ou leur nom `$<name>`.
363
363
364
-
Un groupe pour être exclu de la numérotation en ajoutant `pattern:?:` à son début. Pour appliquer un quantificateur à groupe entier, sans avoir besoin de cet élément dans les résultats. Nous ne pourrons pas alors y faire référence dans la chaine de remplacement.
364
+
Un groupe peut être exclu de la numérotation en ajoutant `pattern:?:` à son début. C'est utile pour appliquer un quantificateur à groupe entier, sans avoir besoin de cet élément dans les résultats. Nous ne pourrons pas non plus y faire référence dans une chaîne de remplacement.
0 commit comments