⊗jsSpREESCh 99 of 294 menu

Ontsnapping van spesiale karakters in JavaScript regulêre uitdrukkings

Gestel ons wil hê dat 'n spesiale karakter homself moet verteenwoordig. Hiervoor moet dit ontsnap word met 'n agteroorskuinsstreep. Kom ons kyk na voorbeelde.

Voorbeeld

In die volgende voorbeeld wou die skrywer van die regulêre uitdrukking dat die soekpatroon soos volg lyk: letter 'a', dan 'n plus '+', dan letter 'x'. Die skrywer van die kode het eger nie die '+'-karakter ontskap nie, en daarom lyk die soekpatroon in werklikheid so: letter 'a' een of meer keer, dan letter 'x':

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

As gevolg sal die volgende in die veranderlike weggeskryf word:

'a+x ! ! !'

Voorbeeld

En nou het die skrywer die plus met 'n agteroorskuinsstreep ontskap. Nou lyk die soekpatroon soos wat dit moet wees: letter 'a', dan plus '+', dan letter 'x'.

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

As gevolg sal die volgende in die veranderlike weggeskryf word:

'! ax aax aaax'

Voorbeeld

In hierdie voorbeeld lyk die patroon so: letter 'a', dan punt '.', dan letter 'x':

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

As gevolg sal die volgende in die veranderlike weggeskryf word:

'! abx azx'

Voorbeeld

In die volgende voorbeeld het die skrywer vergeet om die punt te ontskap en die regulêre uitdrukking het alle substringe getref, aangesien 'n ontskapte punt enige karakter verteenwoordig:

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

As gevolg sal die volgende in die veranderlike weggeskryf word:

'! ! !'

Opmerking

Let daarop dat as jy die agteroorskuinsstreep vir die punt vergeet (wanneer dit homself moet verteenwoordig) - kan 'n mens dit dalk selfs nie raaksien nie:

'a.x'.replace(/a.x/g, '!'); // sal '!' teruggee, soos ons wou

Visueel werk dit reg (aangesien die punt enige karakter verteenwoordig, insluitend 'n gewone punt '.'). Maar as ons die string verander waarin die vervangings plaasvind - sal ons ons fout sien:

'a.x abx azx'.replace(/a.x/g, '!'); // sal '! ! !' teruggee, maar ons het '! abx azx' verwag

Lys van spesiale karakters en gewone karakters

As jy 'n gewone karakter ontskap - sal niks erg gebeur nie - dit sal nog steeds homself verteenwoordig. Die uitsondering is syfers, hulle kan nie ontskap word nie.

Daar kom dikwels twyfel, of 'n gegewe karakter spesiaal is. Sommige kom tot die punt waar hulle alle verdagte karakters een na die ander ontskap. Dit is eger 'n slegte praktyk (dit verrommel die regulêre uitdrukking met agteroorskuinsstrepe).

Spesiale karakters is: $ ^ . * + ? \ / {} [] () |

Nie spesiale karakters is: @ : , ' " ; - _ = < > % # ~ `& !

Praktiese probleme

Gegee 'n string:

let str = 'a.a aba aea';

Skryf 'n regulêre uitdrukking wat die string 'a.a' sal vind, sonder om die ander te vang.

Gegee 'n string:

let str = '2+3 223 2223';

Skryf 'n regulêre uitdrukking wat die string '2+3' sal vind, sonder om die ander te vang.

Gegee 'n string:

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

Skryf 'n regulêre uitdrukking wat die strings '2+3', '2++3', '2+++3', sal vind, sonder om die ander te vang (+ kan enige hoeveelheid wees).

Gegee 'n string:

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

Skryf 'n regulêre uitdrukking wat die strings '23', '2+3', '2++3', '2+++3' sal vind, sonder om die ander te vang.

Gegee 'n string:

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

Skryf 'n regulêre uitdrukking wat die strings '*q+', '*qq+', '*qqq+', sal vind, sonder om die ander te vang.

Gegee 'n string:

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

Skryf 'n regulêre uitdrukking wat die strings in vierkantige hakies sal vind en hulle vervang met '!'.

Afrikaans
AzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικά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
Ons gebruik koekies vir die werking van die webwerf, ontleding en personalisering. Die verwerking van data geskied volgens die Privaatheidsbeleid.
aanvaar alles instel verwerp