Skip to content

Commit 012210b

Browse files
Apply suggestions from code review
Grazie per le correzioni! Co-authored-by: marcellosurdi <42266628+marcellosurdi@users.noreply.github.com>
1 parent 8bb2917 commit 012210b

File tree

1 file changed

+12
-12
lines changed
  • 9-regular-expressions/08-regexp-character-sets-and-ranges

1 file changed

+12
-12
lines changed

9-regular-expressions/08-regexp-character-sets-and-ranges/article.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -113,18 +113,18 @@ alert( "alice15@gmail.com".match(/[^\d\sA-Z]/gi) ); // @ e .
113113

114114
## L'escape dentro []
115115

116-
In genere quando vogliamo trovare esattamente un carattere speciale, dobbiamo effettuarne l'escape come `pattern:\.`. E se abbiamo bisogno di un backslash, allora dobbiamo usare `pattern:\\`, e così via.
116+
In genere quando vogliamo trovare esattamente un carattere speciale, dobbiamo effettuarne l'escape: `pattern:\.`. Se abbiamo bisogno di un backslash, allora dobbiamo usare `pattern:\\`, e così via.
117117

118-
Dentro le parentesi quadre, possiamo usare la stragrande maggioranza di caratteri speciali senza la necessità di effettuarne l'escaping:
118+
Dentro le parentesi quadre, possiamo usare la stragrande maggioranza di caratteri speciali senza la necessità di effettuarne l'escape:
119119

120120
- I simboli `pattern:. + ( )` non necessitano mai di escaping.
121121
- Il trattino `pattern:-` non è preceduto da caratteri di escape all'inizio o alla fine (dove non definisce un intervallo).
122-
- Un accento circonflesso `pattern:^` è soggeto ad escape solo all'inizio (dove significa esclusione).
122+
- Un accento circonflesso `pattern:^` è soggetto ad escape solo all'inizio (dove significa esclusione).
123123
- La parentesi quadra di chiusura `pattern:]` dev'essere sempre soggetta ad escape (se abbiamo bisogno di cercare questo simbolo).
124124

125-
In altre parole, tutti i caratteri speciali sono permessi senza necessita di escape, eccetto quando servono a qualcosa all'interno delle parentesi quadre.
125+
In altre parole, tutti i caratteri speciali sono consentiti senza necessità di escape, eccetto quando significano qualcosa all'interno delle parentesi quadre.
126126

127-
Un punto `.` all'interno delle parentesi quadre significa giusto un punto. Il modello `pattern:[.,]` cercherebbe per uno dei caratteri: o un punto o una virgola.
127+
Un punto `.` all'interno delle parentesi quadre significa soltanto un punto. Il modello `pattern:[.,]` cercherebbe uno dei caratteri: o un punto o una virgola.
128128

129129
Nell'esempio seguente la regexp `pattern:[-().^+]` effettua la ricerca per uno dei caratteri `-().^+`:
130130

@@ -135,10 +135,10 @@ let regexp = /[-().^+]/g;
135135
alert( "1 + 2 - 3".match(regexp) ); // Corrispondono +, -
136136
```
137137

138-
...Ma se decidiamo di effettuarne l'escape "giusto per non sbagliare", il risultato non cambierebbe:
138+
...Ma se decidete di effettuare l'escape "per ogni evenienza", il risultato non cambierebbe:
139139

140140
```js run
141-
// Escape tutto
141+
// Escape di ogni carattere
142142
let regexp = /[\-\(\)\.\^\+]/g;
143143

144144
alert( "1 + 2 - 3".match(regexp) ); // funziona ugualmente: +, -
@@ -152,12 +152,12 @@ Per esempio, cerchiamo `pattern:[𝒳𝒴]` nella stringa `subject:𝒳`:
152152

153153
```js run
154154
alert( '𝒳'.match(/[𝒳𝒴]/) ); // mostra uno strano carattere, come [?]
155-
// (la ricerca è stata eseguita in modo errato, mezzo-carattere restituito)
155+
// (la ricerca è stata eseguita in modo errato, viene restituito mezzo-carattere)
156156
```
157157

158-
Il risultato non è corretto, perché di base la regular expressions "non sa nulla" riguardo le coppie surrogate.
158+
Il risultato non è corretto, perché di base le espressioni regolari "non sanno nulla" riguardo le coppie surrogate.
159159

160-
Il motore delle regular expression pensa che `[𝒳𝒴]` -- non sono due, ma quattro caratteri:
160+
Il motore delle espressioni regolari pensa che `[𝒳𝒴]` -- non sono due, ma quattro caratteri:
161161
1. metà alla sinistra di `𝒳` `(1)`,
162162
2. metà alla destra di `𝒳` `(2)`,
163163
3. metà alla sinistra di `𝒴` `(3)`,
@@ -187,11 +187,11 @@ Se dimentichiamo di aggiungere il flag `pattern:u`, ci sarà un errore:
187187
'𝒳'.match(/[𝒳-𝒴]/); // Errore: Invalid regular expression
188188
```
189189

190-
La ragione è che senza il flag `pattern:u` le coppie surrogate sono percepite come due caratteri, quindi `[𝒳-𝒴]` è interpretato come `[<55349><56499>-<55349><56500>]` (ogni coppia di surrogato è sostituito con il suo codice). Ora è facile vedere che l'intervallo `56499-55349` non è valido: esso inizia con il codice `56499` che è inferiore che finisce con `55349`. Questa è la ragione formale dell'errore.
190+
La ragione è che senza il flag `pattern:u` le coppie surrogate sono percepite come due caratteri, quindi `[𝒳-𝒴]` è interpretato come `[<55349><56499>-<55349><56500>]` (ogni coppia surrogata è sostituita con i suoi codici). Ora è facile osservare che l'intervallo `56499-55349` non è valido: il suo codice iniziale `56499` è maggiore di quello finale `55349`. Questa è la ragione formale dell'errore.
191191

192192
Con il flag `pattern:u` il modello funziona correttamente:
193193

194194
```js run
195-
// cerca per i caratteri da 𝒳 a 𝒵
195+
// cerca i caratteri da 𝒳 a 𝒵
196196
alert( '𝒴'.match(/[𝒳-𝒵]/u) ); // 𝒴
197197
```

0 commit comments

Comments
 (0)