Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗jsSpREESCh 99 of 294 menu
◀ ▶

Escaparea caracterelor speciale în expresiile regulate JavaScript

Să presupunem că vrem să facem ca un caracter special să reprezinte el însuși. Pentru aceasta acesta trebuie escapat folosind backslash-ul. Să vedem câteva exemple.

Exemplul

În următorul exemplu, autorul expresiei regulate a vrut ca modelul de căutare să arate astfel: litera 'a', apoi plus '+', apoi litera 'x'. Cu toate acestea, autorul codului nu a escapat simbolul '+' și de aceea modelul de căutare arată de fapt astfel: litera 'a' de una sau mai multe ori, apoi litera 'x':

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

Ca rezultat, în variabilă se va scrie următorul text:

'a+x ! ! !'

Exemplul

Acum autorul a escapat plusul cu backslash. Acum modelul de căutare arată așa cum trebuie: litera 'a', apoi plus '+', apoi litera 'x'.

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

Ca rezultat, în variabilă se va scrie următorul text:

'! ax aax aaax'

Exemplul

În acest exemplu, modelul arată astfel: litera 'a', apoi punctul '.', apoi litera 'x':

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

Ca rezultat, în variabilă se va scrie următorul text:

'! abx azx'

Exemplul

În următorul exemplu, autorul a uitat să escape slash-ul și sub expresia regulată au căzut toate subșirurile, deoarece punctul neescapat reprezintă orice caracter:

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

Ca rezultat, în variabilă se va scrie următorul text:

'! ! !'

Observație

Atenție la faptul că dacă uitați backslash-ul pentru punct (când acesta ar trebui să reprezinte el însuși) - acest lucru s-ar putea să nu fie observat:

'a.x'.replace(/a.x/g, '!'); // va returna '!', așa cum am vrut

Vizual funcționează corect (deoarece punctul reprezintă orice caracter, inclusiv un punct obișnuit '.'). Dar dacă schimbăm șirul în care se fac înlocuirile - vom vedea greșeala noastră:

'a.x abx azx'.replace(/a.x/g, '!'); // va returna '! ! !', dar se aștepta '! abx azx'

Lista caracterelor speciale și a celor obișnuite

Dacă escapați un caracter obișnuit - nu se va întâmpla nimic rău - acesta va reprezenta oricum el însuși. Excepție - cifrele, acestea nu pot fi escapare.

Deseori apare îndoiala dacă un anumit simbol este special. Unii ajung să escapeze toate caracterele suspecte la rând. Cu toate acestea, aceasta este o practică proastă (încarcă expresia regulată cu backslash-uri).

Sunt caractere speciale: $ ^ . * + ? \ / {} [] () |

Nu sunt caractere speciale: @ : , ' " ; - _ = < > % # ~ `& !

Probleme practice

Este dat șirul:

let str = 'a.a aba aea';

Scrieți o expresie regulată care va găsi șirul 'a.a', fără a-l prinde pe celelalte.

Este dat șirul:

let str = '2+3 223 2223';

Scrieți o expresie regulată care va găsi șirul '2+3', fără a-l prinde pe celelalte.

Este dat șirul:

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

Scrieți o expresie regulată care va găsi șirurile '2+3', '2++3', '2+++3', fără a le prinde pe celelalte (+ poate fi orice număr).

Este dat șirul:

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

Scrieți o expresie regulată care va găsi șirurile '23', '2+3', '2++3', '2+++3', fără a le prinde pe celelalte.

Este dat șirul:

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

Scrieți o expresie regulată care va găsi șirurile '*q+', '*qq+', '*qqq+', fără a le prinde pe celelalte.

Este dat șirul:

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

Scrieți o expresie regulată care va găsi șirurile în paranteze pătrate și le va înlocui cu '!'.

← →
↑
Română▼
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Folosim cookie pentru funcționarea site-ului, analiză și personalizare. Prelucrarea datelor are loc în conformitate cu Politica de confidențialitate.
acceptă toate configurează respinge