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/17-regexp-methods/article.md
+43-44
Original file line number
Diff line number
Diff line change
@@ -8,7 +8,7 @@ O método `str.macth(regexp)` pesquisa correspondências para `regexp` na string
8
8
9
9
Possui 3 modos:
10
10
11
-
1. Se a `regexp` não tiver a flag `padrão:g`, ela retornará a primeira correspondência como uma matriz com a captura de grupos e propriedades `index` (posição da correspondência), `input` (string de entrada, igual a `str`):
11
+
1. Se a `regexp` não tiver a flag `pattern:g`, ela retornará a primeira correspondência como uma matriz com a captura de grupos e propriedades `index` (posição da correspondência), `input` (string de entrada, igual a `str`):
12
12
13
13
```js run
14
14
let str ="Eu amo JavaScript";
@@ -24,7 +24,7 @@ Possui 3 modos:
24
24
alert( result.input ); // Eu amo JavaScript (string original)
25
25
```
26
26
27
-
2. Se a `regexp` tiver a flag `padrão:g`, ela retornará uma matriz com todas as correspondências como strings, sem capturar grupos e outros detalhes.
27
+
2. Se a `regexp` tiver a flag `pattern:g`, ela retornará uma matriz com todas as correspondências como strings, sem capturar grupos e outros detalhes.
28
28
```js run
29
29
let str = "Eu amo JavaScript";
30
30
@@ -34,7 +34,7 @@ Possui 3 modos:
34
34
alert( result.length ); // 1
35
35
```
36
36
37
-
3. Se não houver correspondências, não importa se há flag `padrão:g` ou não, `null` é retornado.
37
+
3. Se não houver correspondências, não importa se há flag `pattern:g` ou não, `null` é retornado.
38
38
39
39
Essa é uma nuance importante. Se não há correspondências, não teremos uma matriz vazia, mas `null`. É fácil de cometer um erro esquecendo disso, por exemplo:
40
40
@@ -44,7 +44,7 @@ Possui 3 modos:
44
44
let result = str.match(/HTML/);
45
45
46
46
alert(result); // null
47
-
alert(result.length); // Error: Cannot read property 'length' of null (Erro: Não é possivel ler a propriedade 'length' de null)
47
+
alert(result.length); // Error: Cannot read property 'length' of null (Erro: Não é possível ler a propriedade 'length' de null)
48
48
```
49
49
50
50
Se desejamos que o resultado seja uma matriz, podemos escrever assim:
@@ -55,7 +55,7 @@ Possui 3 modos:
55
55
56
56
## str.matchAll(regexp)
57
57
58
-
[navegador recente="new"]
58
+
[recent browser="new"]
59
59
60
60
O método `str.matchAll(regexp)` é uma "nova, melhorada" variante do`str.match`.
61
61
@@ -64,7 +64,7 @@ O método `str.matchAll(regexp)` é uma "nova, melhorada" variante do `str.match
64
64
Existem 3 diferenças em relação ao `match`:
65
65
66
66
1. Ela retorna um objeto iterável com correspondências em vez de uma matriz. Podemos fazer dele uma matriz regular usando `Array.from`.
67
-
2. Cada correspondência é retornada como uma matriz com grupos de captura (o mesmo formato que `str.match` sem a flag `padrão:g`).
67
+
2. Cada correspondência é retornada como uma matriz com grupos de captura (o mesmo formato que `str.match` sem a flag `pattern:g`).
68
68
3. Se não houver resultados, não retornará `null`, mas um objeto iterável vazio.
No exemplo abaixo, existem dois parênteses, então a função de substituição é chamada com 5 argumentos: o primeiro é a correspondência completa, em seguida, 2 parênteses, e depois dele (não usado no exemplo) a posição da correspondência e a string original:
195
+
No exemplo abaixo, existem dois parênteses, então a função de substituição é chamada com 5 argumentos: o primeiro é a correspondência completa, em seguida, 2 parênteses, e depois disso (não usado no exemplo) a posição da correspondência e a string original:
196
196
197
197
```js run
198
198
let str = "John Smith";
@@ -202,7 +202,7 @@ let result = str.replace(/(\w+) (\w+)/, (match, name, surname) => `${surname}, $
202
202
alert(result); // Smith, John
203
203
```
204
204
205
-
Se existirem muitos grupos, é conveniente usar os parâmetros de descanso para acessá-los:
205
+
Se existirem muitos grupos, é conveniente usar os parâmetros *rest* para acessá-los:
206
206
207
207
```js run
208
208
let str = "John Smith";
@@ -212,7 +212,7 @@ let result = str.replace(/(\w+) (\w+)/, (...match) => `${match[2]}, ${match[1]}`
212
212
alert(result); // Smith, John
213
213
```
214
214
215
-
Ou, se usarmos grupos nomeados, o objeto `groups` com eles é sempre o último, para que possamos obtê-los assim:
215
+
Ou, se usarmos grupos nomeados, o objeto `groups` com eles é sempre o último, para podermos obtê-los assim:
216
216
217
217
```js run
218
218
let str = "John Smith";
@@ -226,36 +226,35 @@ let result = str.replace(/(?<name>\w+) (?<surname>\w+)/, (...match) => {
226
226
alert(result); // Smith, John
227
227
```
228
228
229
-
O uso de uma função nos dá o poder de substituição definitivo, porque obtém todas as informações sobre a correspondência, tem a variáveis externas e pode fazer tudo.
229
+
O uso de uma função nos dá o poder de substituição definitivo, porque ela obtém todas as informações sobre a correspondência, tem acesso a variáveis externas e pode fazer tudo.
230
230
231
231
## str.replaceAll(str|regexp, str|func)
232
232
233
-
This method is essentially the same as`str.replace`, with two major differences:
233
+
Este método é essencialmente o mesmo que`str.replace`, com duas diferenças principais:
234
234
235
-
1.If the first argument is a string, it replaces *all occurrences*of the string, while`replace`replaces only the *first occurrence*.
236
-
2.If the first argument is a regular expression without the`g` flag, there'll be an error. With `g` flag, it works the same as `replace`.
235
+
1.Se o primeiro argumento for uma string, ele substitui *todas as ocorrências* da string, enquanto`replace`substitui apenas a *primeira ocorrência*.
236
+
2.Se o primeiro argumento for uma expressão regular sem a flag`g`, haverá um erro. Com a flag `g`, funciona da mesma forma que`replace`.
237
237
238
-
The main use case for `replaceAll` is replacing all occurrences of a string.
238
+
O principal caso de uso de `replaceAll`é substituir todas as ocorrências de uma string.
O método `regexp.exec(str)` retorna uma correspondência para `regexp` na string `str`. Ao contrário dos métodos anteriores, é chamado numa regexp, não em uma string.
251
250
252
-
Se comporta de modo diferente dependendo se a regexp possui a flag `padrão:g`.
251
+
Se comporta de modo diferente dependendo se a regexp possui a flag `pattern:g`.
253
252
254
-
Se não houver `padrão:g`, a `regexp.exec(str)` retorna a primeira correspondência exatamente como `str.match(regexp)`. Esse comportamento não traz nada de novo.
253
+
Se não houver `pattern:g`, a `regexp.exec(str)` retorna a primeira correspondência exatamente como `str.match(regexp)`. Esse comportamento não traz nada de novo.
255
254
256
-
Mas se houver a flag `padrão:g`, então:
255
+
Mas se houver a flag `pattern:g`, então:
257
256
-A chamada para `regexp.exec(str)` retorna a primeira correspondência e salva a posição imediatamente após ela na propriedade `regexp.lastIndex`.
258
-
- A próxima chamada inicia a pesquisa na posição `regexp.lastIndex`, retorna a próxima correspondência e salva a posição após elas em `regexp.lastIndex`.
257
+
-A próxima chamada inicia a pesquisa na posição `regexp.lastIndex`, retorna a próxima correspondência e salva a posição após ela em `regexp.lastIndex`.
259
258
-...e assim por diante.
260
259
- Se não houver correspondências, `regexp.exec` retorna `null` e reinicia `regexp.lastIndex` para `0`.
261
260
@@ -276,60 +275,60 @@ while (result = regexp.exec(str)) {
276
275
}
277
276
```
278
277
279
-
Isso funciona bem agora, no entanto para navegadores novos `str.matchAll` é usualmente mais conveniente.
278
+
Isso também funciona agora, no entanto, para navegadores novos `str.matchAll` é usualmente mais conveniente.
280
279
281
-
**Podemos usar `regexp.exec` para buscar de uma posição dada, configurando manualmente `lastIndex`.**
280
+
**Podemos usar `regexp.exec` para buscar a partir de uma posição dada, configurando manualmente `lastIndex`.**
282
281
283
282
Por exemplo:
284
283
285
284
```js run
286
285
let str = 'Olá, mundo!';
287
286
288
-
let regexp =/\w+/g; // sem a flag "g", propriedade lastIndex é ignorada
289
-
regexp.lastIndex=3; // pesquisa a partir da 5º posição (a partir da vírgula)
287
+
let regexp = /\w+/g; // sem a flag "g", a propriedade lastIndex é ignorada
288
+
regexp.lastIndex = 5; // pesquisa a partir da 5ª posição (a partir da vírgula)
290
289
291
290
alert( regexp.exec(str) ); // mundo
292
291
```
293
292
294
-
Se o regexp tiver flag `padrão:y`, então a pesquisa será realizada exatamente na posição `regexp.lastIndex`, nada mais.
293
+
Se a regexp tiver flag `pattern:y`, então a pesquisa será realizada exatamente na posição `regexp.lastIndex`, e não mais adiante.
295
294
296
-
Vamos substituir a flag `padrão:g` pela `padrão:y` no exemplo acima. Não haverá correspondências, como não haverá palavra na posição `3`:
295
+
Vamos substituir a flag `pattern:g` pela `pattern:y` no exemplo acima. Não haverá correspondências, como não haverá palavra na posição `5`:
297
296
298
297
```js run
299
298
let str = 'Olá, mundo!';
300
299
301
300
let regexp = /\w+/y;
302
-
regexp.lastIndex=3; // pesquisa exatamente na posição 5
301
+
regexp.lastIndex = 5; // pesquisa exatamente na posição 5
303
302
304
303
alert( regexp.exec(str) ); // null
305
304
```
306
305
307
-
Isso é conveniente para situações em que precisamos "ler" algo da string por uma regexp nessa posição exata, não em outro lugar.
306
+
Isso é conveniente para situações em que precisamos de "ler" algo da string por uma regexp nessa posição exata, não em outro lugar.
308
307
309
308
## regexp.test(str)
310
309
311
-
O método `regex.test(str)` procura por uma correspondência e retorna `true/false` se existe.
310
+
O método `regex.test(str)` procura por uma correspondência e retorna `true/false`, em conformidade.
Se a regexp tiver a flag `padrão:g`, então `regexp.test` procura a partir da propriedade `regexp.lastIndex` e atualiza esta propriedade, assim como `regexp.exec`.
331
+
Se a regexp tiver a flag `pattern:g`, então `regexp.test` procura a partir da propriedade `regexp.lastIndex` e atualiza esta propriedade, assim como `regexp.exec`.
333
332
334
333
Então o podemos usar para buscar a partir de uma posição fornecida:
0 commit comments