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
Copy file name to clipboardExpand all lines: 9-regular-expressions/03-regexp-unicode/article.md
+22-22Lines changed: 22 additions & 22 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,7 +18,7 @@ Ainsi, les caractères comme `a` et `≈` occupent 2 octets, tandis que les code
18
18
19
19
Il y a longtemps, lorsque le langage JavaScript a été créé, l'encodage Unicode était plus simple : il n'y avait pas de caractères à 4 octets. Ainsi, certaines fonctionnalités du langage les gèrent toujours de manière incorrecte.
20
20
21
-
Par exemple, la propriété `length` pense qu'il y a deux caractères:
21
+
Par exemple, la propriété `length` pense qu'il y a deux caractères:
22
22
23
23
```js run
24
24
alert('😄'.length); // 2
@@ -47,7 +47,7 @@ Nous pouvons rechercher des caractères avec une propriété, écrite sous la fo
47
47
48
48
Par exemple, `\p{Letter}` désigne une lettre dans n'importe quelle langue. Nous pouvons également utiliser `\p{L}`, car `L` est un alias de `Letter` (Lettre). Il existe des alias plus courts pour presque toutes les propriétés.
49
49
50
-
Dans l'exemple ci-dessous, on trouvera trois types de lettres: Anglais, Géorgien et Coréen.
50
+
Dans l'exemple ci-dessous, on trouvera trois types de lettres: Anglais, Géorgien et Coréen.
alert( str.match(/\p{L}/g) ); // null (aucune correspondance, puisqu'il n'y a pas l'indicateur "u")
57
57
```
58
58
59
-
Voici les principales catégories de caractères et leurs sous-catégories:
59
+
Voici les principales catégories de caractères et leurs sous-catégories:
60
60
61
-
- Lettre `L`:
61
+
- Lettre `L`:
62
62
- minuscules `Ll`,
63
63
- modificateur `Lm`,
64
64
- titre `Lt`,
65
65
- majuscule `Lu`,
66
66
- autres `Lo`.
67
-
- Nombre `N`:
67
+
- Nombre `N`:
68
68
- chiffre décimal `Nd`,
69
69
- numéro de lettre `Nl`,
70
70
- autre `No`.
71
-
- Ponctuation `P`:
71
+
- Ponctuation `P`:
72
72
- connecteur `Pc`,
73
73
- tiret `Pd`,
74
74
- citation initiale `Pi`,
75
75
- citation finale `Pf`,
76
76
- ponctuation ouvrante `Ps`,
77
77
- ponctuation fermante `Pe`,
78
78
- autre `Po`.
79
-
- Marqueur `M` (accents, etc.):
79
+
- Marqueur `M` (accents, etc.):
80
80
- espacement combinant `Mc`,
81
81
- contenant `Me`,
82
82
- sans espacement `Mn`.
83
-
- Symbole `S`:
83
+
- Symbole `S`:
84
84
- devise `Sc`,
85
85
- modificateur `Sk`,
86
86
- mathématique `Sm`,
87
87
- autre `So`.
88
-
- Séparateur `Z`:
88
+
- Séparateur `Z`:
89
89
- ligne `Zl`,
90
90
- paragraphe `Zp`,
91
91
- espace `Zs`.
92
-
- Autre `C`:
92
+
- Autre `C`:
93
93
- contrôle `Cc`,
94
94
- format `Cf`,
95
95
- non affecté `Cn`,
@@ -99,19 +99,19 @@ Voici les principales catégories de caractères et leurs sous-catégories:
99
99
100
100
Ainsi, par exemple si nous avons besoin de lettres en minuscules, nous pouvons écrire `pattern:\p{Ll}`, de signes de ponctuation : `pattern:\p{P}` et ainsi de suite.
101
101
102
-
Il existe également d'autres catégories dérivées, comme:
102
+
Il existe également d'autres catégories dérivées, comme:
103
103
-`Alphabetic` (Alphabétique)(`Alpha`), qui comprend les lettres `L`, plus les numéros de lettre `Nl` (par exemple Ⅻ - un caractère pour le chiffre romain 12), plus quelques autres symboles `Other_Alphabetic` (Autre alphabétiques)(`OAlpha`).
104
104
-`Hex_Digit` comprend des chiffres hexadécimaux : `0-9`, `a-f`.
105
105
- ...Et ainsi de suite.
106
106
107
-
Unicode prend en charge de nombreuses propriétés différentes, leur liste complète nécessiterait beaucoup d'espace, voici donc les références:
107
+
Unicode prend en charge de nombreuses propriétés différentes, leur liste complète nécessiterait beaucoup d'espace, voici donc les références:
108
108
109
-
- Liste de toutes les propriétés par caractère: <https://unicode.org/cldr/utility/character.jsp>.
110
-
- Liste de tous les caractères par propriété: <https://unicode.org/cldr/utility/list-unicodeset.jsp>.
111
-
- Alias courts pour les propriétés: <https://www.unicode.org/Public/UCD/latest/ucd/PropertyValueAliases.txt>.
109
+
- Liste de toutes les propriétés par caractère: <https://unicode.org/cldr/utility/character.jsp>.
110
+
- Liste de tous les caractères par propriété: <https://unicode.org/cldr/utility/list-unicodeset.jsp>.
111
+
- Alias courts pour les propriétés: <https://www.unicode.org/Public/UCD/latest/ucd/PropertyValueAliases.txt>.
112
112
- Une base complète de caractères Unicode au format texte, avec toutes les propriétés, se trouve ici: <https://www.unicode.org/Public/UCD/latest/ucd/>.
113
113
114
-
### Exemple: nombres hexadécimaux
114
+
### Exemple: nombres hexadécimaux
115
115
116
116
Par exemple, recherchons des nombres hexadécimaux, écrits sous la forme `xFF`, où `F` est un chiffre hexadécimal (0..1 ou A..F).
117
117
@@ -123,13 +123,13 @@ let regexp = /x\p{Hex_Digit}\p{Hex_Digit}/u;
123
123
alert("number: xAF".match(regexp)); // xAF
124
124
```
125
125
126
-
### Exemple: Hiéroglyphes Chinois
126
+
### Exemple: Hiéroglyphes Chinois
127
127
128
128
Cherchons des hiéroglyphes Chinois.
129
129
130
-
Il y a une propriété unicode `Script` (un système d'écriture), qui peut avoir une valeur: `Cyrillic` (Cyrillique), `Greek` (Grec),`Arabic` (Arabe), `Han` (Chinois) et ainsi de suite, [voici la liste complète](https://en.wikipedia.org/wiki/Script_(Unicode)).
130
+
Il y a une propriété unicode `Script` (un système d'écriture), qui peut avoir une valeur: `Cyrillic` (Cyrillique), `Greek` (Grec),`Arabic` (Arabe), `Han` (Chinois) et ainsi de suite, [voici la liste complète]("https://en.wikipedia.org/wiki/Script_(Unicode)").
131
131
132
-
Pour rechercher des caractères dans un système d'écriture donné, nous devons utiliser `pattern:Script=<value>`, par exemple pour les lettres cyrilliques: `pattern:\p{sc=Cyrillic}`, pour les hiéroglyphes chinois: `pattern:\p{sc=Han}`, et ainsi de suite:
132
+
Pour rechercher des caractères dans un système d'écriture donné, nous devons utiliser `pattern:Script=<value>`, par exemple pour les lettres cyrilliques: `pattern:\p{sc=Cyrillic}`, pour les hiéroglyphes chinois: `pattern:\p{sc=Han}`, et ainsi de suite:
133
133
134
134
```js run
135
135
let regexp =/\p{sc=Han}/gu; // renvoie des hiéroglyphes Chinois
@@ -159,9 +159,9 @@ Plus loin, dans l'article <info:regexp-quantifiers>, nous verrons comment recher
159
159
160
160
L'indicateur `pattern:u` permet la prise en charge d'Unicode dans les expressions régulières.
161
161
162
-
Cela signifie deux choses:
162
+
Cela signifie deux choses:
163
163
164
-
1. Les caractères de 4 octets sont traités correctement: comme un seul caractère, pas comme deux caractères de 2 octets.
165
-
2. Les propriétés Unicode peuvent être utilisées dans la recherche: `\p{…}`.
164
+
1. Les caractères de 4 octets sont traités correctement: comme un seul caractère, pas comme deux caractères de 2 octets.
165
+
2. Les propriétés Unicode peuvent être utilisées dans la recherche: `\p{…}`.
166
166
167
167
Avec les propriétés Unicode, nous pouvons rechercher des mots dans des langues données, des caractères spéciaux (guillemets, devises) et ainsi de suite.
0 commit comments