Skip to content

Commit 4529d1f

Browse files
authored
Update article.md
1 parent fe89021 commit 4529d1f

File tree

1 file changed

+42
-42
lines changed

1 file changed

+42
-42
lines changed

9-regular-expressions/17-regexp-methods/article.md

Lines changed: 42 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ Ha 3 modalità:
1919
alert( result[1] ); // Script (primo gruppo di acquisizione)
2020
alert( result.length ); // 2
2121

22-
// Additional information:
22+
// Informazioni aggiuntive:
2323
alert( result.index ); // 7 (posizione della corrispondenza)
2424
alert( result.input ); // I love JavaScript (stringa sorgente)
2525
```
2626

27-
2. Se la `regexp` presenta la flag `pattern:g`, restituisce un array contenente tutte le corrispondenze sotto forma di stringhe, senza i gruppi di acquisizione ulteriori dettagli.
27+
2. Se la `regexp` presenta la flag `pattern:g`, restituisce un array contenente tutte le corrispondenze sotto forma di stringhe, senza i gruppi di acquisizione o ulteriori dettagli.
2828
```js run
2929
let str = "I love JavaScript";
3030
@@ -34,7 +34,7 @@ Ha 3 modalità:
3434
alert( result.length ); // 1
3535
```
3636

37-
3. Se non esistono corrispondenze, indipendentemente dalla presenza o meno della flag `pattern:g`, è restituito `null`.
37+
3. Se non esistono corrispondenze, indipendentemente dalla presenza o meno della flag `pattern:g`, ci viene restituito `null`.
3838

3939
È una differenza sottile, ma importante. Se non esistono corrispondenze, infatti, non ci viene restituito un array vuoto, ma `null`. È facile sbagliare dimenticandosene, e.g.:
4040

@@ -86,22 +86,22 @@ alert( firstMatch.index ); // 0
8686
alert( firstMatch.input ); // <h1>Hello, world!</h1>
8787
```
8888

89-
Se usiamo `for..of` per accedere alle corrispondenze di `matchAll`, non necessitiamo più di `Array.from`.
89+
Se usiamo `for..of` per accedere alle corrispondenze di `matchAll`, non abbiamo più bisogno di usare `Array.from`.
9090

9191
## str.split(regexp|substr, limit)
9292

93-
Divide la stringa usando l'espressione regolare (o una sottostringa) come separatore.
93+
Questo metodo divide una stringa utilizzando un'espressione regolare (o una sottostringa) come separatore.
9494
95-
Possiamo usare `split` con le stringhe, nel seguente modo:
95+
Possiamo usare `split` con le stringhe nel seguente modo:
9696
9797
```js run
98-
alert('12-34-56'.split('-')) // array di ['12', '34', '56']
98+
alert('12-34-56'.split('-')) // ['12', '34', '56']
9999
```
100100
101-
Possiamo anche dividere con un'espressione regolare, allo stesso modo:
101+
Possiamo dividere le stringhe tramite un'espressione regolare, allo stesso modo:
102102

103103
```js run
104-
alert('12, 34, 56'.split(/,\s*/)) // array di ['12', '34', '56']
104+
alert('12, 34, 56'.split(/,\s*/)) // ['12', '34', '56']
105105
```
106106

107107
## str.search(regexp)
@@ -114,13 +114,13 @@ let str = "A drop of ink may make a million think";
114114
alert( str.search( /ink/i ) ); // 10 (posizione della prima corrispondenza)
115115
```
116116

117-
**La limitazione importante: `search` trova solo la prima corrispondenza.**
117+
**La limitazione importante: `search` trova solamente la prima corrispondenza.**
118118

119-
Se abbiamo bisogno della posizione di una corrispondenza successiva, dobbiamo usare altri mezzi, ad esempio trovandole tutte con `str.matchAll(regexp)`.
119+
Se avessimo bisogno della posizione di una corrispondenza successiva, dovremmo usare altri mezzi, ad esempio `str.matchAll(regexp)` per trovarle tutte.
120120

121121
## str.replace(str|regexp, str|func)
122122

123-
Questo è un metodo generico per cercare e sostituire e uno dei più utili: è l'equivalente di un coltellino svizzero in questo campo.
123+
Questo è un metodo generico per cercare e sostituire, ed è uno dei più utili: è l'equivalente di un coltellino svizzero in questo campo.
124124
125125
Possiamo usarlo senza espressioni regolari, per cercare e sostituire una sottostringa:
126126
@@ -129,11 +129,11 @@ Possiamo usarlo senza espressioni regolari, per cercare e sostituire una sottost
129129
alert('12-34-56'.replace("-", ":")) // 12:34-56
130130
```
131131
132-
Tuttavia, vi è un'insidia.
132+
Tuttavia, c'è un'insidia.
133133
134-
**Quando il primo argomento di `replace` è una stringa, solo la prima corrispondenza viene sostituita.**
134+
**Quando il primo argomento di `replace` è una stringa, solo la prima corrispondenza sarà sostituita.**
135135
136-
Si può vedere nell'esempio sopra: solo il primo `"-"` è stato sostituito da `":"`.
136+
È possibile osservarlo nell'esempio sopra: solo il primo `"-"` è stato sostituito da `":"`.
137137

138138
Per trovare tutti i trattini, non dobbiamo usare la stringa `"-"`, ma l'espressione regolare `pattern:/-/g`, obbligatoriamente con la flag`pattern:g`:
139139
@@ -144,7 +144,7 @@ alert( '12-34-56'.replace( *!*/-/g*/!*, ":" ) ) // 12:34:56
144144
145145
Il secondo argomento è una stringa di sostituzione. Possiamo usare caratteri speciali al suo interno:
146146
147-
| Simboli | Azione nella stringa di sostituzione |
147+
| Caratteri | Azione eseguita nella stringa di sostituzione |
148148
|--------|--------|
149149
|`$&`|inserisce l'intera corrispondenza|
150150
|<code>$&#096;</code>|inserisce una parte della stringa prima della corrispondenza|
@@ -158,25 +158,25 @@ Per esempio:
158158
```js run
159159
let str = "John Smith";
160160
161-
// inver
161+
// invertire nome e cognome
162162
alert(str.replace(/(john) (smith)/i, '$2, $1')) // Smith, John
163163
```
164164
165165
**Per situazioni che richiedono sostituzioni "intelligenti", il secondo argomento può essere una funzione.**
166166
167-
Essa sarà chiamata per ogni corrispondenza, e il valore restituito sarà inserito come sostituto.
167+
Essa sarà chiamata per ogni corrispondenza, e il valore restituito sarà la sostituzione.
168168
169169
La funzione è chiamata con gli argomenti `func(match, p1, p2, ..., pn, offset, input, groups)`:
170170
171171
1. `match` -- la corrispondenza,
172-
2. `p1, p2, ..., pn` -- contenuti dei gruppi di acquisizione (se ce ne sono),
173-
3. `offset` -- posizione della corrispondenza,
172+
2. `p1, p2, ..., pn` -- i contenuti dei gruppi di acquisizione (se ce ne sono),
173+
3. `offset` -- la posizione della corrispondenza,
174174
4. `input` -- la stringa sorgente,
175175
5. `groups` -- un oggetto con i gruppi nominati.
176176
177177
Se non ci sono parentesi all'interno dell'espressione regolare, la funzione avrà solo 3 argomenti: `func(str, offset, input)`.
178178
179-
Per esempio, rendiamo maiuscole tutte le corrispondenze:
179+
Per esempio, per rendere maiuscole tutte le corrispondenze:
180180
181181
```js run
182182
let str = "html and css";
@@ -186,13 +186,13 @@ let result = str.replace(/html|css/gi, str => str.toUpperCase());
186186
alert(result); // HTML and CSS
187187
```
188188
189-
Rimpiazzare ogni corrispondenza con la sua posizione nella stringa:
189+
Per rimpiazzare ogni corrispondenza con la sua posizione nella stringa:
190190
191191
```js run
192192
alert("Ho-Ho-ho".replace(/ho/gi, (match, offset) => offset)); // 0-3-6
193193
```
194194
195-
Nell'esempio seguente ci sono due parentesi, pertanto la funzione di sostituzione è chiamata con 5 argomenti: la prima è la corrispondenza completa, poi le 2 parentesi, e dopo di esse la posizione della corrispondenza e la stringa sorgente (non usate nell'esempio):
195+
Nell'esempio seguente ci sono due parentesi, di conseguenza la funzione di sostituzione è chiamata con 5 argomenti: la prima è la corrispondenza completa, poi le 2 parentesi, e dopo di esse la posizione della corrispondenza e la stringa sorgente (omesse nell'esempio):
196196
197197
```js run
198198
let str = "John Smith";
@@ -212,7 +212,7 @@ let result = str.replace(/(\w+) (\w+)/, (...match) => `${match[2]}, ${match[1]}`
212212
alert(result); // Smith, John
213213
```
214214
215-
O, se stiamo usando gruppi nominati, l'oggetto `groups` essi contenente è sempre l'ultimo, così possiamo ottenerlo in questo modo:
215+
Altrimenti, se stiamo usando gruppi nominati, l'oggetto `groups` essi contenente è sempre l'ultimo e possiamo ottenerlo in questo modo:
216216
217217
```js run
218218
let str = "John Smith";
@@ -226,16 +226,16 @@ let result = str.replace(/(?<name>\w+) (?<surname>\w+)/, (...match) => {
226226
alert(result); // Smith, John
227227
```
228228
229-
Usare una funzione ci permette di usare un potere sostitutivo supremo, poiché ottiene tutte le informazioni sulla corrispondenza, ha accesso alle variabili esterne e può fare qualsiasi cosa.
229+
Usare una funzione ci permette di adoperare un potere sostitutivo supremo, poiché essa ottiene tutte le informazioni sulla corrispondenza, ha accesso alle variabili esterne e può fare qualsiasi cosa.
230230
231231
## str.replaceAll(str|regexp, str|func)
232232
233233
Questo metodo è praticamente uguale a `str.replace`, ma con due differenze rilevanti:
234234
235235
1. Se il primo argomento è una stringa, sostituisce *tutte le corrispondenze* della stringa, mentre `replace` sostituisce solamente la *prima corrispondenza*.
236-
2. Se il primo argomento è un'espressione regolare con la flag `g`, sarà generato un errore. Con la `g` flag, funziona come `replace`.
236+
2. Se il primo argomento è un'espressione regolare con la flag `g`, sarà restituito un errore. Con la `g` flag, infatti, funziona come `replace`.
237237

238-
Il caso principale in cui si usa `replaceAll` è la sostituzione di tutte le corrispondenze di una stringa.
238+
Il motivo principale per cui si usa `replaceAll` è la necessità di sostituire ogni corrispondenza in una stringa.
239239

240240
In questo modo:
241241

@@ -251,17 +251,17 @@ Il metodo `regexp.exec(str)` restituisce una corrispondenza di `regexp` nella st
251251
252252
Si comporta differentemente a seconda della presenza o meno della flag `pattern:g` nell'espressione regolare.
253253

254-
Se non c'è `pattern:g`, `regexp.exec(str)` restituisce la prima corrispondenza, esattamente come `str.match(regexp)`. Questo comportamento non comporta niente di nuovo.
254+
Se non c'è `pattern:g`, `regexp.exec(str)` restituirà la prima corrispondenza, esattamente come `str.match(regexp)`. Questo comportamento non comporta niente di nuovo.
255255
256256
Ma se c'è una flag `pattern:g`, allora:
257257
- Una chiamata a `regexp.exec(str)` restituisce la prima corrispondenza e salva la posizione immediatamente successiva a essa nella proprietà `regexp.lastIndex`.
258258
- La successiva chiamata di tale tipo inizia la ricerca a partire dalla posizione `regexp.lastIndex`, restituisce la corrispondenza successiva e salva la posizione seguente in `regexp.lastIndex`.
259259
- ...E così via.
260-
- Se non esistono corrispondenze, `regexp.exec` restituisce `null` e reimposta `regexp.lastIndex` a `0`.
260+
- Se non esistono corrispondenze, `regexp.exec` restituirà `null` e reimposterà `regexp.lastIndex` a `0`.
261261

262-
Perciò, chiamate ripetute restituiscono tutte le corrispondenze una dopo l'altra, usando la proprietà `regexp.lastIndex` per tenere traccia della posizione di ricerca corrente.
262+
Perciò le chiamate ripetute restituiscono tutte le corrispondenze una dopo l'altra, usando la proprietà `regexp.lastIndex` per tenere traccia della posizione di ricerca corrente.
263263
264-
Nel passato, prima che il metodo `str.matchAll` fosse implementato in JavaScript, le chiamate a `regexp.exec` erano usate nel loop per ottenere tutte le corrispondenze con i gruppi:
264+
Nel passato, prima che il metodo `str.matchAll` fosse implementato in JavaScript, le chiamate a `regexp.exec` erano usate nei loop per ottenere tutte le corrispondenze con i gruppi:
265265
266266
```js run
267267
let str = 'More about JavaScript at https://javascript.info';
@@ -276,9 +276,9 @@ while (result = regexp.exec(str)) {
276276
}
277277
```
278278
279-
Questo funziona anche adesso, anche se per i browser moderni solitamente `str.matchAll` è più conveniente.
279+
Questo approccio funziona anche adesso, anche se per i browser moderni solitamente `str.matchAll` è più conveniente rispetto a un loop contenente `regexp.exec`.
280280
281-
**Possiamo usare `regexp.exec` per cercare a partire da una posizione data impostando manualmente `lastIndex`.**
281+
**Possiamo usare `regexp.exec` per cercare a partire da una posizione da noi scelta impostando manualmente `lastIndex`.**
282282
283283
Per esempio:
284284
@@ -293,7 +293,7 @@ alert( regexp.exec(str) ); // world
293293
294294
Se l'espressione regolare presenta la flag `pattern:y`, la ricerca sarà eseguita esattamente alla posizione `regexp.lastIndex`, senza andare oltre.
295295
296-
Sostituiamo la flag `pattern:g` con `pattern:y` nell'esempio sopra. Non ci saranno corrispondenze, in quanto non c'è una parola alla posizione `5`:
296+
Sostituiamo la flag `pattern:g` con `pattern:y` nell'esempio sopra. Non ci saranno corrispondenze, perché non c'è una parola alla posizione `5`:
297297
298298
```js run
299299
let str = 'Hello, world!';
@@ -304,11 +304,11 @@ regexp.lastIndex = 5; // ricerca esattamente alla posizione 5
304304
alert( regexp.exec(str) ); // null
305305
```
306306
307-
Ciò è conveniente per le situazioni in cui abbiamo bisogno di "leggere" qualcosa dalla stringa con un'espressione regolare alla posizione esatta, non da qualche parte più lontano.
307+
Ciò è conveniente per le situazioni in cui abbiamo bisogno di "leggere" qualcosa dalla stringa con un'espressione regolare alla posizione esatta, non a un'altra posizione più avanti.
308308
309309
## regexp.test(str)
310310
311-
Il metodo `regexp.test(str)` cerca una corrispondenza e restituisce `true/false` a seconda della sua esistenza.
311+
Il metodo `regexp.test(str)` cerca una corrispondenza in una stringa `str` e restituisce `true/false` a seconda della sua esistenza.
312312
313313
Per esempio:
314314
@@ -320,7 +320,7 @@ alert( *!*/love/i*/!*.test(str) ); // true
320320
alert( str.search(*!*/love/i*/!*) != -1 ); // true
321321
```
322322
323-
Un esempio con la risposta negativa:
323+
Un esempio con l'esito negativo:
324324
325325
```js run
326326
let str = "Bla-bla-bla";
@@ -329,9 +329,9 @@ alert( *!*/love/i*/!*.test(str) ); // false
329329
alert( str.search(*!*/love/i*/!*) != -1 ); // false
330330
```
331331
332-
Se l'espressione regolare ha la flag `pattern:g`, `regexp.test` cerca dalla proprietà `regexp.lastIndex` e l'aggiorna, come fa `regexp.exec`.
332+
Se l'espressione regolare ha la flag `pattern:g`, `regexp.test` cerca a partire dal valore della proprietà `regexp.lastIndex` e l'aggiorna, come fa `regexp.exec`.
333333
334-
Pertanto possiamo usarlo per cercare da una posizione data:
334+
Pertanto possiamo usarlo per cercare a partire da una posizione da noi scelta:
335335
336336
```js run
337337
let regexp = /love/gi;
@@ -344,7 +344,7 @@ alert( regexp.test(str) ); // false (nessuna corrispondenza)
344344
```
345345
346346
````warn header="Same global regexp tested repeatedly on different sources may fail"
347-
Se applichiamo la stessa espressione regolare globale a input differenti, potrebbe produrre un risultato sbagliato, poiché la chiamata di `regexp.test` manda avanti la proprietà `regexp.lastIndex`, pertanto la ricerca in un'altra stringa potrebbe iniziare da una posizione diversa da 0.
347+
Se applichiamo la stessa espressione regolare globale a stringhe differenti potrebbero verificarsi risultati errati, poiché la chiamata di `regexp.test` aggiorna la proprietà `regexp.lastIndex`, per cui la ricerca in un'altra stringa potrebbe iniziare da una posizione diversa da 0.
348348
349349
Per esempio, qui chiamiamo `regexp.test` due volte sullo stesso testo, e la seconda volta fallisce:
350350
@@ -355,7 +355,7 @@ alert( regexp.test("javascript") ); // true (ora regexp.lastIndex=10)
355355
alert( regexp.test("javascript") ); // false
356356
```
357357
358-
Ciò avviene esattamente perché `regexp.lastIndex` è diverso da 0 nella seconda prova.
358+
Ciò avviene proprio perché `regexp.lastIndex` è diverso da 0 nella seconda prova.
359359
360-
Per risolvere, possiamo impostare `regexp.lastIndex = 0` prima di ogni ricerca. O invece di chiamare metodi sull'espressione regolare, usare i metodi delle stringhe `str.match/search/...`; essi non usano `lastIndex`.
360+
Per risolvere il problema, possiamo impostare `regexp.lastIndex = 0` prima di ogni ricerca, o piuttosto che chiamare metodi sull'espressione regolare, usare i metodi delle stringhe `str.match/search/...`: essi infatti non usano la proprietà `lastIndex`.
361361
````

0 commit comments

Comments
 (0)