Salt la conținutul principal
Modulul 1 · Lecția 4 din 44/32 în curs~10 min
Lecții din modul (4/4)

Evadarea meta-caracterelor

Unele caractere din regex au o semnificație specială: sunt numite meta-personaje. Dacă doriți să potriviți caracterul literal (de exemplu, un caracter real ., o adevărată +, o adevărată paranteză) trebuie să le prefixezi cu un backslash \, care le scapă.

Meta-caracterele de reținut sunt douăsprezece:

Code
.  *  +  ?  ^  $  |  \  (  )  [  ]  {  }  /

(/ nu este cu adevărat un meta-caracter motor, dar trebuie să fie eliminat în notația literală JavaScript /.../.)

Code
Pattern: \$\d+\.\d\d
Sample:  Prezzi: $9.99, $12.50, totale $22.49.
                 ^^^^^  ^^^^^^         ^^^^^^

Aici scăpăm de $ (ancoră la capătul șirului) și . (caracterul sălbatic) pentru a se potrivi cu caractere literale în formatul de preț „dolar + număr + punct + două cifre”.

Bară oblică inversă dublă în șiruri JS

Când scrieți un model în interiorul unui șir JavaScript (cum faceți în cazul nostru exerciții) bara oblică inversă trebuie dublată. Șirul JS '\\d' conține două caractere (\ și d) și este exact modelul regex \d.

JS
const re1 = /\d+/; // literal notation: a single backslash
const re2 = new RegExp('\\d+'); // string: double backslash

Editorul de curs arată modelul deja decodat (vedeți un singur \d); nu trebuie să dublezi nimic singur.

Cele 12 meta-personaje speciale

Caracterele cu semnificații speciale din motor sunt exact 12: \\\ ^ $ . | ? * + ( ) [ {. Dacă doriți să le asociați ca text literal, trebuie să le precedați cu o bară oblică inversă. În unele medii (de exemplu, șiruri JS non-raw), ar putea fi necesar să dublați bara oblică inversă (\\\\).

Încearcă

Exercițiu#regex.m1.l4.e1
Încercări: 0Se încarcă…

Găsiți fiecare preț în formatul „$N.NN” (dolar, una sau mai multe cifre, punct, două cifre). Nu uitați să scăpați de `$` și `.`.

Se încarcă editorul...
Afișează indiciu

$ trebuie să fie escape ca \\$, punctul ca \\. - altfel punctul se potrivește cu orice.

Soluție disponibilă după 3 încercări

Exercițiu de revizuire

Exercițiu#regex.m1.l4.e2
Încercări: 0Se încarcă…

Găsiți fiecare semn literal de întrebare `?` din text. `?` este un meta-personaj: trebuie scăpat.

Se încarcă editorul...
Afișează indiciu

Fără o scăpare,? ar fi un cuantificator (modulul 2). Pune un \\ în fața lui.

Soluție disponibilă după 3 încercări

Provocare suplimentară

Exercițiu#regex.m1.l4.e3
Încercări: 0Se încarcă…

Find all occurrences of `.tar.gz` in the text, ensuring that the dots are matched literally.

Se încarcă editorul...
Afișează indiciu

Introduceți o bară oblică inversă înainte de fiecare punct pentru a scăpa de el.

Soluție disponibilă după 3 încercări