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:
. * + ? ^ $ | \ ( ) [ ] { } /(/ nu este cu adevărat un meta-caracter motor, dar trebuie să fie eliminat în
notația literală JavaScript /.../.)
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.
const re1 = /\d+/; // literal notation: a single backslash
const re2 = new RegExp('\\d+'); // string: double backslashEditorul 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ă
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 `.`.
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
Găsiți fiecare semn literal de întrebare `?` din text. `?` este un meta-personaj: trebuie scăpat.
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ă
Find all occurrences of `.tar.gz` in the text, ensuring that the dots are matched literally.
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