⊗jsSpREESCh 99 of 294 menu

Escapovanie špeciálnych znakov v regulárnych výrazoch JavaScript

Predpokladajme, že chceme, aby špeciálny znak predstavoval sám seba. Na to je potrebné ho escapovať pomocou spätného lomítka. Pozrime sa na príklady.

Príklad

V nasledujúcom príklade autor regulárneho výrazu chcel, aby vyhľadávací vzor vyzeral takto: písmeno 'a', potom plus '+', potom písmeno 'x'. Avšak, autor kódu neescapoval symbol '+', a preto vyhľadávací vzor v skutočnosti vyzerá takto: písmeno 'a' jeden alebo viackrát, potom písmeno 'x':

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

Výsledkom zapísaným do premennej bude:

'a+x ! ! !'

Príklad

Teraz autor escapoval plus spätným lomítkom. Vyhľadávací vzor teraz vyzerá tak, ako má: písmeno 'a', potom plus '+', potom písmeno 'x'.

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

Výsledkom zapísaným do premennej bude:

'! ax aax aaax'

Príklad

V tomto príklade vzor vyzerá takto: písmeno 'a', potom bodka '.', potom písmeno 'x':

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

Výsledkom zapísaným do premennej bude:

'! abx azx'

Príklad

V nasledujúcom príklade autor zabudol escapovať bodku a pod regulárny výraz spadli všetky podreťazce, pretože neescapovaná bodka predstavuje akýkoľvek znak:

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

Výsledkom zapísaným do premennej bude:

'! ! !'

Poznámka

Všimnite si, že ak zabudnete spätné lomítko pre bodku (keď by mala predstavovať samu seba) - je možné si toho ani nevšimnúť:

'a.x'.replace(/a.x/g, '!'); // vráti '!', ako sme chceli

Vizuálne to funguje správne (pretože bodka predstavuje akýkoľvek znak, vrátane obyčajnej bodky '.'). Ale ak zmeníme reťazec, v ktorom sa vykonávajú náhrady - uvidíme našu chybu:

'a.x abx azx'.replace(/a.x/g, '!'); // vráti '! ! !', ale očakávalo sa '! abx azx'

Zoznam špeciálnych symbolov a obyčajných

Ak escapujete obyčajný symbol - nič zlého sa nestane - stále bude predstavovať sám seba. Výnimka - čísla, tie nie je možné escapovať.

Často vznikajú pochybnosti, či je daný symbol špeciálny. Niektorí ľudia až tak, že escapujú všetky podozrivé symboly naraz. Avšak, to je zlá prax (zanečisťuje regulárny výraz spätnými lomítkami).

Špeciálne symboly sú: $ ^ . * + ? \ / {} [] () |

Obyčajné symboly (nie sú špeciálne): @ : , ' " ; - _ = < > % # ~ `& !

Praktické úlohy

Daný reťazec:

let str = 'a.a aba aea';

Napíšte regulárny výraz, ktorý nájde reťazec 'a.a', bez zachytenia ostatných.

Daný reťazec:

let str = '2+3 223 2223';

Napíšte regulárny výraz, ktorý nájde reťazec '2+3', bez zachytenia ostatných.

Daný reťazec:

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

Napíšte regulárny výraz, ktorý nájde reťazce '2+3', '2++3', '2+++3', bez zachytenia ostatných (+ môže byť ľubovoľný počet).

Daný reťazec:

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

Napíšte regulárny výraz, ktorý nájde reťazce '23', '2+3', '2++3', '2+++3', bez zachytenia ostatných.

Daný reťazec:

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

Napíšte regulárny výraz, ktorý nájde reťazce '*q+', '*qq+', '*qqq+', bez zachytenia ostatných.

Daný reťazec:

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

Napíšte regulárny výraz, ktorý nájde reťazce v hranatých zátvorkách a nahradí ich '!'.

Slovenčina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť