⊗jsSpREESCh 99 of 294 menu

Escaping af specialtegn i JavaScript regulære udtryk

Antag, at vi ønsker at gøre så et specialtegn repræsenterer sig selv. For at gøre dette skal det escapes med en omvendt skråstreg. Lad os se på eksempler.

Eksempel

I det følgende eksempel ønskede forfatteren af det regulære udtryk, at søgemønstret skulle se sådan ud: bogstavet 'a', derefter plus '+', derefter bogstavet 'x'. Imidlertid escapede kodeforfatteren ikke tegnet '+', og derfor ser søgemønstret faktisk sådan ud: bogstavet 'a' en eller flere gange, derefter bogstavet 'x':

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

Resultatet bliver, at der skrives følgende til variablen:

'a+x ! ! !'

Eksempel

I dette eksempel har forfatteren nu escaped plustegnet med en omvendt skråstreg. Nu ser søgemønstret ud som det skal: bogstavet 'a', derefter plus '+', derefter bogstavet 'x'.

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

Resultatet bliver, at der skrives følgende til variablen:

'! ax aax aaax'

Eksempel

I dette eksempel ser mønstret sådan ud: bogstavet 'a', derefter punktum '.', derefter bogstavet 'x':

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

Resultatet bliver, at der skrives følgende til variablen:

'! abx azx'

Eksempel

I det følgende eksempel glemte forfatteren at escape skråstregen, og alle delstrenge blev ramt af det regulære udtryk, da en u-escaped punktum repræsenterer ethvert tegn:

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

Resultatet bliver, at der skrives følgende til variablen:

'! ! !'

Bemærkning

Læg mærke til, at hvis du glemmer den omvendte skråstreg for punktum (når den skal repræsentere sig selv) - kan det være man slet ikke lægger mærke til det:

'a.x'.replace(/a.x/g, '!'); // returnerer '!', som vi ønskede

Visuelt fungerer det korrekt (da punktum repræsenterer ethvert tegn, inklusive et almindeligt punktum '.'). Men hvis man ændrer strengen, hvor erstatningerne foretages - vil vi se vores fejl:

'a.x abx azx'.replace(/a.x/g, '!'); // returnerer '! ! !', men forventet var '! abx azx'

Liste over specialtegn og almindelige tegn

Hvis man escape et almindeligt tegn - sker der ikke noget forskrekkeligt - det vil stadig repræsentere sig selv. Undtagelsen er cifre, de kan ikke escapes.

Ofte opstår der tvivl om, hvorvidt et givet tegn er et specialtegn. Nogle kommer så langt som at escape alle mistænkelige tegn i træk. Dette er dog en dårlig praksis (roder det regulære udtryk til med omvendte skråstreger).

Følgende er specialtegn: $ ^ . * + ? \ / {} [] () |

Følgende er ikke specialtegn: @ : , ' " ; - _ = < > % # ~ `& !

Praktiske opgaver

Givet strengen:

let str = 'a.a aba aea';

Skriv et regulært udtryk, der finder strengen 'a.a', uden at fange de andre.

Givet strengen:

let str = '2+3 223 2223';

Skriv et regulært udtryk, der finder strengen '2+3', uden at fange de andre.

Givet strengen:

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

Skriv et regulært udtryk, der finder strengene '2+3', '2++3', '2+++3', uden at fange de andre (+ kan være et vilkårligt antal).

Givet strengen:

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

Skriv et regulært udtryk, der finder strengene '23', '2+3', '2++3', '2+++3', uden at fange de andre.

Givet strengen:

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

Skriv et regulært udtryk, der finder strengene '*q+', '*qq+', '*qqq+', uden at fange de andre.

Givet strengen:

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

Skriv et regulært udtryk, der finder strengene i kantede parenteser og erstatter dem med '!'.

Dansk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruger cookies til webstedets funktion, analyse og personalisering. Behandling af data foregår i henhold til Fortrolighedspolitikken.
accepter alle tilpas afvis