⊗jsSpREESCh 99 of 294 menu

Escaping Special Characters in JavaScript Regular Expressions

Predpostavimo, da želimo, da poseben znak predstavlja samega sebe. Za to ga je potrebno escapirati z uporabo poševnice nazaj. Poglejmo si primere.

Primer

V naslednjem primeru je avtor regularnega izraza želel, da bi vzorec iskanja izgledal takole: črka 'a', nato plus '+', nato črka 'x'. Vendar avtor kode ni escapiral znaka '+', zato vzorec iskanja dejansko izgleda takole: črka 'a' enkrat ali večkrat, potem črka 'x':

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

Kot rezultat se bo v spremenljivko zapisalo naslednje:

'a+x ! ! !'

Primer

V tem primeru je avtor escapiral plus z poševnico nazaj. Zdaj vzorec iskanja izgleda tako, kot bi moral: črka 'a', nato plus '+', nato črka 'x'.

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

Kot rezultat se bo v spremenljivko zapisalo naslednje:

'! ax aax aaax'

Primer

V tem primeru vzorec izgleda takole: črka 'a', nato pika '.', nato črka 'x':

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

Kot rezultat se bo v spremenljivko zapisalo naslednje:

'! abx azx'

Primer

V naslednjem primeru je avtor pozabil escapirati piko in so bile z regularnim izrazom zajete vse podnize, saj neescapirana pika predstavlja poljuben znak:

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

Kot rezultat se bo v spremenljivko zapisalo naslednje:

'! ! !'

Opomba

Bodite pozorni, da če pozabite poševnico nazaj za piko (ko naj bi predstavljala samo sebe) - tega morda sploh ne boste opazili:

'a.x'.replace(/a.x/g, '!'); // vrne '!', kot smo želeli

Vizualno deluje pravilno (saj pika predstavlja katerikoli znak, vključno z običajno piko '.'). Toda če zamenjamo niz, v katerem potekajo zamenjave - bomo videli našo napako:

'a.x abx azx'.replace(/a.x/g, '!'); // vrne '! ! !', pričakovali pa smo '! abx azx'

Seznam posebnih in običajnih simbolov

Če escapirate običajen znak - se ne bo nič hudega zgodilo - še vedno bo predstavljal samega sebe. Izjema so številke, teh ni mogoče escapirati.

Pogosto se pojavi dvom, ali je določen znak poseben. Nekateri celo escapiramo vs sumljive znake zaporedoma. Vendar je to slaba praksa (zamaši regularni izraz s poševnicami nazaj).

Posebni znaki so: $ ^ . * + ? \ / {} [] () |

Niso posebni znaki: @ : , ' " ; - _ = < > % # ~ `& !

Praktične naloge

Podan je niz:

let str = 'a.a aba aea';

Napišite regularni izraz, ki bo našel niz 'a.a', ne da bi zajel ostale.

Podan je niz:

let str = '2+3 223 2223';

Napišite regularni izraz, ki bo našel niz '2+3', ne da bi zajel ostale.

Podan je niz:

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

Napišite regularni izraz, ki bo našel nize '2+3', '2++3', '2+++3', ne da bi zajel ostale (+ je lahko poljubno število).

Podan je niz:

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

Napišite regularni izraz, ki bo našel nize '23', '2+3', '2++3', '2+++3', ne da bi zajel ostale.

Podan je niz:

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

Napišite regularni izraz, ki bo našel nize '*q+', '*qq+', '*qqq+', ne da bi zajel ostale.

Podan je niz:

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

Napišite regularni izraz, ki bo našel nize v oglatih oklepajih in jih zamenjal z '!'.

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
Za delovanje spletnega mesta, analitiko in personalizacijo uporabljamo piškotke. Obdelava podatkov poteka v skladu s Politiko zasebnosti.
sprejmi vse nastavi zavrni