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/07-regexp-escaping/article.md
+7-7Lines changed: 7 additions & 7 deletions
Original file line number
Diff line number
Diff line change
@@ -1,7 +1,7 @@
1
1
2
2
# Échappement, caractères spéciaux
3
3
4
-
Comme nous l'avons vu, la barre oblique inversée (ou backslash) `pattern:\` est utilisé pour désigner une classe de caractères, e.g. `pattern:\d`. C'est donc un caractère spécial dans les expressions régulières (comme dans les chaînes de caractères classiques).
4
+
Comme nous l'avons vu, la barre oblique inversée (ou backslash) `pattern:\` est utilisée pour désigner une classe de caractères, e.g. `pattern:\d`. C'est donc un caractère spécial dans les expressions régulières (comme dans les chaînes de caractères classiques).
5
5
6
6
Il y a d'autres caractères spéciaux, qui ont un sens particulier dans une expression rationnelle. Ils sont utilisés pour effectuer des recherches avancées. En voici la liste complète : `pattern:[ \ ^ $ . | ? * + ( )`.
7
7
@@ -43,15 +43,15 @@ Voici à quoi ressemble une recherche d'un slash `'/'` :
43
43
alert( "/".match(/\//) ); // '/'
44
44
```
45
45
46
-
Par contre si nous n'utilisons pas l'écriture `pattern:/.../`, mais si nous créons l'expression rationnelle avec `new RegExp`, alors nous n'avons plus besoin de l'échapper :
46
+
Par contre si nous n'utilisons pas l'écriture `pattern:/.../`, mais créons l'expression rationnelle avec `new RegExp`, alors nous n'avons plus besoin de l'échapper :
47
47
48
48
```js run
49
49
alert( "/".match(newRegExp("/")) ); // trouve /
50
50
```
51
51
52
52
## new RegExp
53
53
54
-
Si nous construisons une expression rationnelle avec `new RegExp`, alors nous n'avons pas besoin d'échapper les `/`, mais nous avons besoin d'autres échappements.
54
+
Si nous construisons une expression rationnelle avec `new RegExp`, nous n'avons pas besoin d'échapper les `/`, mais nous aurons besoin d'autres échappements.
55
55
56
56
Par exemple, considérons :
57
57
@@ -61,9 +61,9 @@ let regexp = new RegExp("\d\.\d");
61
61
alert( "Chapter 5.1".match(regexp) ); // null
62
62
```
63
63
64
-
Une recherche pourtant similaire à un exemple précédent, qui fonctionne avec `pattern:/\d\.\d/`, ne fonctionne pas ici avec `new RegExp("\d\.\d")`. Pourquoi ?
64
+
C'est une recherche pourtant similaire à un exemple précédent, qui fonctionnait avec `pattern:/\d\.\d/`, mais pas ici avec `new RegExp("\d\.\d")`. Pourquoi ?
65
65
66
-
Les backslashes sont en fait "consommés" par la chaîne de caractères. On peut se souvenir, que les chaîne de caractères ont leurs propres caractères spéciaux, comme `\n`, et le backslash est utilisé pour l'échappement.
66
+
Les backslashes sont en fait "consommés" par la chaîne de caractères. On peut se souvenir, que les chaîne de caractères ont leurs propres caractères spéciaux, comme `\n`, et le backslash est aussi utilisé pour l'échappement.
67
67
68
68
Voici comment "\d\.\d" est perçu :
69
69
@@ -77,9 +77,9 @@ Les guillemets "consomment" les backslashes et les interprètent pour la chaîne
77
77
-`\u1234` -- devient le caractère unicode de ce code,
78
78
- ... Et lorsqu'il n'y a pas de sens particulier : comme `pattern:\d` ou `\z`, alors le backslash est simplement retiré.
79
79
80
-
Donc `new RegExp` reçoit une chaîne de caractère sans backslash. C'est pour ça que la recherche ne fonctionnait pas !
80
+
Donc `new RegExp` reçoit une chaîne de caractères sans backslash. C'est pour ça que la recherche ne fonctionnait pas !
81
81
82
-
Pour résoudre ça, nous devons doubler les backslashes, parce que la chaine de caractère transforme les `\\` en `\`:
82
+
Pour résoudre ça, nous devons doubler les backslashes, parce que la chaine de caractères transforme les `\\` en `\`:
0 commit comments