Skip to content

Commit 6758619

Browse files
committed
translate surrogate to seizets d'indirection instead of substitution
according to unicode.org french translation
1 parent 9f50334 commit 6758619

File tree

1 file changed

+6
-6
lines changed
  • 9-regular-expressions/08-regexp-character-sets-and-ranges

1 file changed

+6
-6
lines changed

9-regular-expressions/08-regexp-character-sets-and-ranges/article.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ alert( "1 + 2 - 3".match(regexp) ); // fonctionne aussi: +, -
146146

147147
## Intervalles et marqueur "u"
148148

149-
S'il y a une paire de substitution dans l'ensemble, le marqueur `pattern:u` est requis pour qu'il fonctionne correctement.
149+
S'il y a une paire de seizets d'indirection([surrogate pair](https://fr.wikipedia.org/wiki/Table_des_caract%C3%A8res_Unicode_(D000-DFFF))) dans l'ensemble, le marqueur `pattern:u` est requis pour qu'elle soit interprétée correctement.
150150

151151
Par exemple, cherchons `pattern:[𝒳𝒴]` dans la chaîne `subject:𝒳`:
152152

@@ -155,9 +155,9 @@ alert( '𝒳'.match(/[𝒳𝒴]/) ); // affiche un caractère étrange qui resse
155155
// (la recherche n'a pas fonctionné correctement, seulement la moitié du caractère est retourné)
156156
```
157157

158-
Le résultat est erroné, car par défaut les expressions rationnelles "ne connaisse pas" les paires de substitutions.
158+
Le résultat est erroné, car par défaut une expression rationnelle ne reconnait pas une telle paire.
159159

160-
Le moteur d'expression rationnelle pense que `[𝒳𝒴]` -- ne sont pas deux mais quatre caractères:
160+
Le moteur d'expression rationnelle pense que `[𝒳𝒴]` -- ne sont pas deux mais quatre caractères :
161161
1. la moitié gauche de `𝒳` `(1)`,
162162
2. la moitié droite de `𝒳` `(2)`,
163163
3. la moitié gauche de `𝒴` `(3)`,
@@ -179,19 +179,19 @@ Mais si nous ajoutons le marqueur `pattern:u`, on aura alors le comportement att
179179
alert( '𝒳'.match(/[𝒳𝒴]/u) ); // 𝒳
180180
```
181181

182-
On retrouve ce même fonctionnement pour un intervalle, comme `[𝒳-𝒴]`.
182+
On retrouve ce même fonctionnement dans un intervalle, comme `[𝒳-𝒴]`.
183183

184184
Si nous oublions le marqueur `pattern:u`, il y aura une erreur :
185185

186186
```js run
187187
'𝒳'.match(/[𝒳-𝒴]/); // Error: Invalid regular expression
188188
```
189189

190-
En effet sans le marqueur `pattern:u` les paires de substitutions sont perçues comme deux caractères distincts, donc `[𝒳-𝒴]` est interprété en `[<55349><56499>-<55349><56500>]` (chaque paire de substitution est remplacée par ses codes). Il est maintenant évident que l'intervalle `56499-55349` n'est pas valide : le premier code `56499` est plus grand que la fin `55349`. Voilà la logique de l'erreur.
190+
En effet sans le marqueur `pattern:u` les paires de seizets sont perçues comme deux caractères distincts, donc `[𝒳-𝒴]` est interprété en `[<55349><56499>-<55349><56500>]` (chacune des paires est remplacée par ses codes). Il est maintenant évident que l'intervalle `56499-55349` n'est pas valide : le premier code `56499` est plus grand que la fin `55349`. Voilà la logique de cette erreur.
191191

192192
Avec le marqueur `pattern:u` le modèle est interprété correctement :
193193

194194
```js run
195-
// cherche un caractère entre 𝒳 et 𝒵 compris
195+
// Cherche un caractère entre 𝒳 et 𝒵 compris
196196
alert( '𝒴'.match(/[𝒳-𝒵]/u) ); // 𝒴
197197
```

0 commit comments

Comments
 (0)