⊗jsSpREESCh 99 of 294 menu

Escapning av specialtecken i JavaScript regex

Antag att vi vill göra så att ett specialtecken representerar sig självt. För att göra detta måste det escapnas med ett omvänt snedstreck. Låt oss titta på exempel.

Exempel

I följande exempel ville författaren till det reguljära uttrycket att sökmönstret skulle se ut så här: bokstaven 'a', sedan ett plus '+', sedan bokstaven 'x'. Men författaren till koden escapade inte tecknet '+' och därför ser sökmönstret faktiskt ut så här: bokstaven 'a' en eller flera gånger, sedan bokstaven 'x':

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

Resultatet som skrivs till variabeln blir följande:

'a+x ! ! !'

Exempel

I det här exemplet har författaren escapat plus-tecknet med ett omvänt snedstreck. Nu ser sökmönstret ut som det ska: bokstaven 'a', sedan ett plus '+', sedan bokstaven 'x'.

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

Resultatet som skrivs till variabeln blir följande:

'! ax aax aaax'

Exempel

I detta exempel ser mönstret ut så här: bokstaven 'a', sedan en punkt '.', sedan bokstaven 'x':

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

Resultatet som skrivs till variabeln blir följande:

'! abx azx'

Exempel

I nästa exempel glömde författaren att escapna snedstrecket och alla delsträngar matchades av det reguljära uttrycket, eftersom en oescapad punkt representerar vilket tecken som helst:

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

Resultatet som skrivs till variabeln blir följande:

'! ! !'

Anmärkning

Observera att om du glömmer det omvända snedstrecket för punkten (när den ska representera sig själv) - kan det vara svårt att märka:

'a.x'.replace(/a.x/g, '!'); // returnerar '!', som vi ville

Visuellt fungerar det korrekt (eftersom punkten representerar vilket tecken som helst, inklusive en vanlig punkt '.'). Men om vi ändrar strängen där ersättningarna sker - kommer vi att se vårt misstag:

'a.x abx azx'.replace(/a.x/g, '!'); // returnerar '! ! !', men förväntat var '! abx azx'

Lista över specialtecken och vanliga tecken

Om man escapar ett vanligt tecken - händer inget hemskt - det kommer fortfarande att representera sig självt. Undantaget är siffror, de kan inte escapas.

Ofta finns det tvivel om ett visst tecken är specialtecken eller inte. Vissa kommer till det punkt att de escapar alla misstänkta tecken i följd. Detta är dock dålig praxis (skräpar ner det reguljära uttrycket med omvända snedstreck).

Specialtecken är: $ ^ . * + ? \ / {} [] () |

Icke-specialtecken är: @ : , ' " ; - _ = < > % # ~ `& !

Praktiska uppgifter

Given en sträng:

let str = 'a.a aba aea';

Skriv ett reguljärt uttryck som hittar strängen 'a.a', utan att fånga de andra.

Given en sträng:

let str = '2+3 223 2223';

Skriv ett reguljärt uttryck som hittar strängen '2+3', utan att fånga de andra.

Given en sträng:

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

Skriv ett reguljärt uttryck som hittar strängarna '2+3', '2++3', '2+++3', utan att fånga de andra (+ kan vara vilket antal som helst).

Given en sträng:

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

Skriv ett reguljärt uttryck som hittar strängarna '23', '2+3', '2++3', '2+++3', utan att fånga de andra.

Given en sträng:

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

Skriv ett reguljärt uttryck som hittar strängarna '*q+', '*qq+', '*qqq+', utan att fånga de andra.

Given en sträng:

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

Skriv ett reguljärt uttryck som hittar strängarna i hakparenteser och ersätter dem med '!'.

Svenska
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi använder kakor för webbplatsens funktion, analys och personalisering. Behandling av data sker i enlighet med Integritetspolicyn.
acceptera alla anpassa avvisa