⊗jsSpREESCh 99 of 294 menu

Escaping special characters in JavaScript regular expressions

Pretpostavimo da želimo da učinimo da specijalni znak označava samog sebe. Za ovo potrebno ga je escapovati koristeći obrnutu kosu crtu. Pogledajmo na primerima.

Primer

U sledećem primeru autor regularnog izraza je želeo da obrazac pretrage izgleda ovako: slovo 'a', zatim plus '+', zatim slovo 'x'. Međutim, autor koda nije escapovao znak '+' i stoga obrazac pretrage zapravo izgleda ovako: slovo 'a' jedan ili više puta, zatim slovo 'x':

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

Kao rezultat, u promenljivu će biti upisano sledeće:

'a+x ! ! !'

Primer

A sada je autor escapovao plus obrnutom kosom crtom. Sada obrazac pretrage izgleda kako treba: slovo 'a', zatim plus '+', zatim slovo 'x'.

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

Kao rezultat, u promenljivu će biti upisano sledeće:

'! ax aax aaax'

Primer

U ovom primeru obrazac izgleda ovako: slovo 'a', zatim tačka '.', zatim slovo 'x':

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

Kao rezultat, u promenljivu će biti upisano sledeće:

'! abx azx'

Primer

U sledećem primeru autor je zaboravio da escapuje tačku i regularni izraz je uhvatio sve podniske, jer tačka koja nije escapovana označava bilo koji znak:

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

Kao rezultat, u promenljivu će biti upisano sledeće:

'! ! !'

Napomena

Obratite pažnju na to da ako zaboravite obrnutu kosu crtu za tačku (kada ona treba da označava samu sebe) - to se možda čak neće primetiti:

'a.x'.replace(/a.x/g, '!'); // vraća '!', kako smo i hteli

Vizuelno radi ispravno (pošto tačka označava bilo koji znak, uključujući i običnu tačku '.'). Ali ako promenimo nisku u kojoj se vrše zamene - videćemo našu grešku:

'a.x abx azx'.replace(/a.x/g, '!'); // vraća '! ! !', a očekivalo se '! abx azx'

Lista specijalnih znakova i običnih

Ako escapujete običan znak - ništa strašno se neće desiti - on će i dalje označavati samog sebe. Izuzetak su cifre, one se ne mogu escapovati.

Često se postavlja pitanje, da li je dati znak specijalan. Neki idu dotle da escapuju sve sumnjive znakove jedan za drugim. Međutim, to je loša praksa (zasipa regularni izraz obrnutim kosim crtama).

Specijalni znakovi su: $ ^ . * + ? \ / {} [] () |

Nisu specijalni znakovi: @ : , ' " ; - _ = < > % # ~ `& !

Praktični zadaci

Data je niska:

let str = 'a.a aba aea';

Napišite regularni izraz koji će pronaći nisku 'a.a', ne uhvativši ostale.

Data je niska:

let str = '2+3 223 2223';

Napišite regularni izraz koji će pronaći nisku '2+3', ne uhvativši ostale.

Data je niska:

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

Napišite regularni izraz koji će pronaći niske '2+3', '2++3', '2+++3', ne uhvativši ostale (+ može biti bilo koja količina).

Data je niska:

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

Napišite regularni izraz koji će pronaći niske '23', '2+3', '2++3', '2+++3', ne uhvativši ostale.

Data je niska:

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

Napišite regularni izraz koji će pronaći niske '*q+', '*qq+', '*qqq+', ne uhvativši ostale.

Data je niska:

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

Napišite regularni izraz koji će pronaći niske u uglastim zagradama i zameniti ih sa '!'.

Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij