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
+11-11Lines changed: 11 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,4 +1,3 @@
1
-
2
1
# Escapes, caracteres especiais
3
2
4
3
Como vimos anteriormente, a contrabarra `pattern:\` é usada para demarcar classes de caracteres, como `pattern:\d` por exemplo. Sendo então, um caractere especial em regexes (bem como em strings normais).
@@ -16,37 +15,38 @@ Para usar um caractere especial como um caractere comum, adicionamos uma contrab
16
15
Isso também é conhecido como "escapar um caractere".
alert("Chapter 511".match(/\d\.\d/)); // null (procurando por um ponto literal \.)
22
22
```
23
23
24
24
Parênteses também são caracteres especiais, então se quisermos usá-los, devemos usar `pattern:\(`. O exemplo abaixo procura a string `"g()"`:
25
25
26
26
```js run
27
-
alert("function g()".match(/g\(\)/)); // "g()"
27
+
alert("function g()".match(/g\(\)/)); // "g()"
28
28
```
29
29
30
30
Se estivermos buscando por uma contrabarra `\`, que é um caractere especial tanto em strings comuns quanto em regexes, devemos escapá-la também.
31
31
32
32
```js run
33
-
alert("1\\2".match(/\\/)); // '\'
33
+
alert("1\\2".match(/\\/)); // '\'
34
34
```
35
35
36
36
## Uma barra
37
37
38
-
O caractere de barra `'/'` não é um caractere especial, mas no JavaSript é usado para delimitar regexes: `pattern:/...pattern.../`, então devemos escapá-la também.
38
+
O caractere de barra `'/'` não é um caractere especial, mas no JavaScript é usado para delimitar regexes: `pattern:/...pattern.../`, então devemos escapá-la também.
39
39
40
40
Uma busca por uma barra `'/'` fica assim:
41
41
42
42
```js run
43
-
alert("/".match(/\//)); // '/'
43
+
alert("/".match(/\//)); // '/'
44
44
```
45
45
46
46
Por outro lado, se não estivermos usando a sintaxe `pattern:/.../`, mas sim o construtor `new RegExp`, não é necessário usar um escape:
47
47
48
48
```js run
49
-
alert("/".match(newRegExp("/"))); // busca um /
49
+
alert("/".match(newRegExp("/"))); // busca um /
50
50
```
51
51
52
52
## new RegExp
@@ -56,9 +56,9 @@ Se estivermos criando uma expressão regular com o `new RegExp`, não precisamos
56
56
Considere esse exemplo:
57
57
58
58
```js run
59
-
let regexp =newRegExp("\d\.\d");
59
+
let regexp =newRegExp("d.d");
60
60
61
-
alert("Chapter 5.1".match(regexp)); // null
61
+
alert("Chapter 5.1".match(regexp)); // null
62
62
```
63
63
64
64
Uma busca muito similar em um dos exemplos anteriores funcionou com o `pattern:/\d\.\d/`, mas nosso `new RegExp("\d\.\d")` não. Por quê?
@@ -68,7 +68,7 @@ Isso acontece porque contrabarras são "consumidas" pela string. Como deve se le
68
68
Veja como "\d\.\d" é interpretado:
69
69
70
70
```js run
71
-
alert("\d\.\d"); // d.d
71
+
alert("d.d"); // d.d
72
72
```
73
73
74
74
Strings comuns "consomem" contrabarras e interpretam-nas separadamente, por exemplo:
0 commit comments