⊗jsSpREESCh 99 of 294 menu

Ескапирање на специјални карактери во регуларните изрази на JavaScript

Да претпоставиме дека сакаме да направиме специјалниот карактер да го означува самиот себе. За ова треба да се ескапира со помош на обратна коса црта. Ајде да погледнеме на примери.

Пример

Во следниот пример авторот на регуларниот израз сакал, шаблонот за пребарување да изгледа вака: буква 'a', потоа плус '+', потоа буква 'x'. Сепак, авторот на кодот не го ескапирал симболот '+' и затоа шаблонот за пребарување всушност изгледа вака: буква 'a' еднаш или повеќе пати, потоа буква 'x':

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

Како резултат во променливата ќе се запише следново:

'a+x ! ! !'

Пример

А сега авторот го ескапирал плус со обратна коса црта. Сега шаблонот за пребарување изгледа како што треба: буква 'a', потоа плус '+', потоа буква 'x'.

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

Како резултат во променливата ќе се запише следново:

'! ax aax aaax'

Пример

Во овој пример шаблонот изгледа вака: буква 'a', потоа точка '.', потоа буква 'x':

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

Како резултат во променливата ќе се запише следново:

'! abx azx'

Пример

Во следниот пример авторот заборавил да ја ескапира точката и под регуларниот израз погодени се сите поднизи, бидејќи неescapираната точка означува било кој карактер:

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

Како резултат во променливата ќе се запише следново:

'! ! !'

Забелешка

Обрнете внимание на тоа дека ако заборавите обратна коса црта за точка (кога таа треба да го означува самиот себе) - ова може дури и да не се забележи:

'a.x'.replace(/a.x/g, '!'); // ќе врати '!', како што сакавме

Визуелно работи правилно (бидејќи точката означува било кој карактер, вклучувајќи ја и обичната точка '.'). Но ако ја смениме низата, во која се случуваат замени - ќе ја видиме нашата грешка:

'a.x abx azx'.replace(/a.x/g, '!'); // ќе врати '! ! !', а се очекуваше '! abx azx'

Листа на специјални симболи и обични

Ако се ескапира обичен карактер - ништо страшно нема да се случи - тој сепак ќе го означува самиот себе. Исклучок - цифрите, тие не можат да се ескапираат.

Чсто се појавува сомнеж, дали даден карактер е специјален. Некои одат до тоа што ескапираат сите сомнителни симболи еден по друг. Сепак, ова е лоша практика (ја загадува регуларниот израз со обратни коси црти).

Специјални симболи се: $ ^ . * + ? \ / {} [] () |

Не се специјални симболи: @ : , ' " ; - _ = < > % # ~ `& !

Практични задачи

Дадена е низа:

let str = 'a.a aba aea';

Напишете регуларен израз, кој ќе ја најде низата 'a.a', без да ги земе останатите.

Дадена е низа:

let str = '2+3 223 2223';

Напишете регуларен израз, кој ќе ја најде низата '2+3', без да ги земе останатите.

Дадена е низа:

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

Напишете регуларен израз, кој ќе ги најде низите '2+3', '2++3', '2+++3', без да ги земе останатите (+ може да биде било кое количество).

Дадена е низа:

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

Напишете регуларен израз, кој ќе ги најде низите '23', '2+3', '2++3', '2+++3', без да ги земе останатите.

Дадена е низа:

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

Напишете регуларен израз, кој ќе ги најде низите '*q+', '*qq+', '*qqq+', без да ги земе останатите.

Дадена е низа:

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

Напишете регуларен израз, кој ќе ги најде низите во квадратни загради и ќе ги замени со '!'.

Македонски
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние користиме колачиња за работата на веб-страната, анализа и персонализација. Обработката на податоци се врши во согласност со Политиката за приватност.
прифати ги сите прилагоди одбиј