⊗jsSpREESCh 99 of 294 menu

Speciális karakterek escape-elése JavaScript reguláris kifejezésekben

Tegyük fel, hogy azt szeretnénk, hogy egy speciális karakter önmagát jelölje. Ehhez escape-elni kell egy visszaperjelellel. Nézzük meg példákon.

Példa

A következő példában a reguláris kifejezés szerzője azt szerette volna, hogy a keresési minta így nézzen ki: 'a' 'a' betű, majd plusz '+', majd 'x' betű. A kód szerzője azonban nem escape-elte a '+' szimbólumot, ezért a keresési minta valójában így néz ki: 'a''a' betű egyszer vagy többször, majd 'x' betű:

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

Ennek eredményeképpen a változóba a következő íródik:

'a+x ! ! !'

Példa

Ebben a példában a szerző escape-elte a pluszjelet visszaperjelellel. Most a keresési minta olyan, ahogy kell: 'a''a' betű, majd plusz '+', majd 'x' betű.

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

Ennek eredményeképpen a változóba a következő íródik:

'! ax aax aaax'

Példa

Ebben a példában a minta így néz ki: 'a''a' betű, majd pont '.', majd 'x' betű:

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

Ennek eredményeképpen a változóba a következő íródik:

'! abx azx'

Példa

A következő példában a szerző elfelejtette escape-elni a pontot, és a reguláris kifejezés minden résztringre illeszkedett, mivel egy nem escape-elt pont bármely karaktert jelöl:

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

Ennek eredményeképpen a változóba a következő íródik:

'! ! !'

Megjegyzés

Figyeljük meg, hogy ha elfelejtjük a visszaperjelet a pont elé (amikor önmagát kellene jelölje) - ezt talán észre sem vesszük:

'a.x'.replace(/a.x/g, '!'); // visszaadja '!'-t, ahogy szerettük volna

Vizuálisan helyesen működik (mivel a pont bármely karaktert jelöl, beleértve a közönséges pontot is '.'). De ha megváltoztatjuk a karakterláncot, amelyen a csere történik - látni fogjuk a hibánkat:

'a.x abx azx'.replace(/a.x/g, '!'); // visszaadja '! ! !'-t, de '! abx azx' várt

Speciális és közönséges szimbólumok listája

Ha egy közönséges karaktert escape-elünk - semmi rossz nem történik - továbbra is önmagát fogja jelölni. Kivételt képeznek a számok, azokat nem szabad escape-elni.

Gyakran merül fel kétség, hogy egy adott szimbólum speciális-e. Vannak, akik addig mennek, hogy minden gyanús szimbólumot escape-elnek egymás után. Ez azonban rossz gyakorlat (összekuszáltá teszi a reguláris kifejezést visszaperjelekkel).

Speciális karakterek: $ ^ . * + ? \ / {} [] () |

Nem speciális karakterek: @ : , ' " ; - _ = < > % # ~ `& !

Gyakorlati feladatok

Adott egy karakterlánc:

let str = 'a.a aba aea';

Írj reguláris kifejezést, amely megtalálja a 'a.a' karakterláncot, anélkül, hogy a többit is kiválasztaná.

Adott egy karakterlánc:

let str = '2+3 223 2223';

Írj reguláris kifejezést, amely megtalálja a '2+3' karakterláncot, anélkül, hogy a többit is kiválasztaná.

Adott egy karakterlánc:

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

Írj reguláris kifejezést, amely megtalálja a '2+3', '2++3', '2+++3' karakterláncokat, anélkül, hogy a többit is kiválasztaná (a + bármennyi lehet).

Adott egy karakterlánc:

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

Írj reguláris kifejezést, amely megtalálja a '23', '2+3', '2++3', '2+++3' karakterláncokat, anélkül, hogy a többit is kiválasztaná.

Adott egy karakterlánc:

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

Írj reguláris kifejezést, amely megtalálja a '*q+', '*qq+', '*qqq+' karakterláncokat, anélkül, hogy a többit is kiválasztaná.

Adott egy karakterlánc:

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

Írj reguláris kifejezést, amely megtalálja a szögletes zárójelben lévő karakterláncokat és kicseréli őket '!'-ra.

Magyar
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
A weboldal működéséhez, elemzéshez és személyre szabáshoz sütiket használunk. Az adatfeldolgozás a Adatvédelmi irányelvek szerint történik.
összes elfogadása beállítás elutasítás