⊗jsSpREESCh 99 of 294 menu

Escaping dei caratteri speciali nelle espressioni regolari JavaScript

Supponiamo di voler fare in modo che un carattere speciale rappresenti se stesso. Per fare ciò è necessario escaparlo utilizzando una barra rovesciata. Vediamo alcuni esempi.

Esempio

Nel seguente esempio, l'autore dell'espressione regolare voleva che il modello di ricerca fosse: lettera 'a', poi il segno più '+', poi lettera 'x'. Tuttavia, l'autore del codice non ha escapato il carattere '+' e quindi il modello di ricerca in realtà è: lettera 'a' una o più volte, poi lettera 'x':

let str = 'a+x ax aax aaax'; let res = str.replace(/a+x/g, '!');

Di conseguenza, nella variabile verrà memorizzato quanto segue:

'a+x ! ! !'

Esempio

In questo caso l'autore ha escapato il segno più con una barra rovesciata. Ora il modello di ricerca è come dovrebbe essere: lettera 'a', poi il segno più '+', poi lettera 'x'.

let str = 'a+x ax aax aaax'; let res = str.replace(/a\+x/g, '!');

Di conseguenza, nella variabile verrà memorizzato quanto segue:

'! ax aax aaax'

Esempio

In questo esempio, il modello è il seguente: lettera 'a', poi il punto '.', poi lettera 'x':

let str = 'a.x abx azx'; let res = str.replace(/a\.x/g, '!');

Di conseguenza, nella variabile verrà memorizzato quanto segue:

'! abx azx'

Esempio

Nel seguente esempio l'autore si è dimenticato di escapare il punto e l'espressione regolare ha catturato tutte le sottostringhe, poiché un punto non escapato rappresenta qualsiasi carattere:

let str = 'a.x abx azx'; let res = str.replace(/a.x/g, '!');

Di conseguenza, nella variabile verrà memorizzato quanto segue:

'! ! !'

Osservazione

Nota che se dimentichi la barra rovesciata per il punto (quando dovrebbe rappresentare se stesso) - potrebbe passare inosservato:

'a.x'.replace(/a.x/g, '!'); // restituirà '!', come volevamo

Visivamente funziona correttamente (poiché il punto rappresenta qualsiasi carattere, incluso un punto normale '.'). Ma se cambiamo la stringa in cui avvengono le sostituzioni - vedremo il nostro errore:

'a.x abx azx'.replace(/a.x/g, '!'); // restituirà '! ! !', ma ci si aspettava '! abx azx'

Elenco dei caratteri speciali e ordinari

Se si escapa un carattere ordinario - non succede niente di grave - rappresenterà comunque se stesso. Fanno eccezione le cifre, non possono essere escapate.

Spesso sorge il dubbio se un determinato carattere sia speciale. Alcuni arrivano al punto di escapare tutti i caratteri sospetti senza criterio. Tuttavia, questa è una cattiva pratica (ingombra l'espressione regolare di barre rovesciate).

Sono caratteri speciali: $ ^ . * + ? \ / {} [] () |

Non sono caratteri speciali: @ : , ' " ; - _ = < > % # ~ `& !

Problemi pratici

Data la stringa:

let str = 'a.a aba aea';

Scrivi un'espressione regolare che trovi la stringa 'a.a', senza catturare le altre.

Data la stringa:

let str = '2+3 223 2223';

Scrivi un'espressione regolare che trovi la stringa '2+3', senza catturare le altre.

Data la stringa:

let str = '23 2+3 2++3 2+++3 345 567';

Scrivi un'espressione regolare che trovi le stringhe '2+3', '2++3', '2+++3', senza catturare le altre (+ può essere qualsiasi numero).

Data la stringa:

let str = '23 2+3 2++3 2+++3 445 677';

Scrivi un'espressione regolare che trovi le stringhe '23', '2+3', '2++3', '2+++3', senza catturare le altre.

Data la stringa:

let str = '*+ *q+ *qq+ *qqq+ *qqq qqq+';

Scrivi un'espressione regolare che trovi le stringhe '*q+', '*qq+', '*qqq+', senza catturare le altre.

Data la stringa:

let str = '[abc] {abc} abc (abc) [abc]';

Scrivi un'espressione regolare che trovi le stringhe tra parentesi quadre e le sostituisca con '!'.

Italiano
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesia日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Utilizziamo i cookie per il funzionamento del sito, l'analisi e la personalizzazione. I dati vengono elaborati in conformità con la Politica sulla privacy.
accetta tutto personalizza rifiuta