⊗jsSpREESCh 99 of 294 menu

Specialiųjų simbolių ekranavimas JavaScript reguliariosiose išraiškose

Tarkime, kad norime, kad specialusis simbolis reikštų pats save. Tam jį reikia ekranuoti naudojant atgalinį pasvirąjį brūkšnį. Pažiūrėkime pavyzdžiais.

Pavyzdys

Šiame pavyzdyje reguliariosios išraiškos autorius norėjo, kad paieškos šablonas atrodytų taip: raidė 'a', tada pliusas '+', tada raidė 'x'. Tačiau, kodo autorius neekranavo simbolio '+' ir todėl paieškos šablonas iš tikrųjų atrodo taip: raidė 'a' vieną ar daugiau kartų, paskui raidė 'x':

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

Rezultate į kintamąjį bus įrašyta taip:

'a+x ! ! !'

Pavyzdys

O dabar autorius ekranavo pliusą atgaliniu brūkšniu. Dabar paieškos šablonas atrodo taip, kaip reikia: raidė 'a', tada pliusas '+', tada raidė 'x'.

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

Rezultate į kintamąjį bus įrašyta taip:

'! ax aax aaax'

Pavyzdys

Šiame pavyzdyje šablonas atrodo taip: raidė 'a', tada taškas '.', tada raidė 'x':

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

Rezultate į kintamąjį bus įrašyta taip:

'! abx azx'

Pavyzdys

Kitame pavyzdyje autorius pamiršo ekranuoti tašką ir pagal reguliariąją išraišką pateko visos eilutės, nes neekranuotas taškas reiškia bet kurį simbolį:

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

Rezultate į kintamąjį bus įrašyta taip:

'! ! !'

Pastaba

Atkreipkite dėmesį, kad jei pamiršite atgalinį brūkšnį taškui (kai jis turi reikšti pats save) - to galima net nepastebėti:

'a.x'.replace(/a.x/g, '!'); // grąžins '!', kaip ir norėjome

Vizualiai veikia teisingai (kadangi taškas reiškia bet kurį simbolį, taip pat ir įprastą tašką '.'). Bet jei pakeisime eilutę, kurioje vyksta pakeitimai - pamatysime savo klaidą:

'a.x abx azx'.replace(/a.x/g, '!'); // grąžins '! ! !', o tikėtasi '! abx azx'

Specialiųjų ir įprastų simbolių sąrašas

Jei ekranuosite įprastą simbolį - nieko blogo neatsitiks - jis vis tiek reikš patį save. Išimtis - skaičiai, jų ekranuoti negalima.

Dažnai kyla abejonių, ar šis simbolis yra specialus. Kai kurie net ima ekranuoti visus įtartinus simbolius iš eilės. Tačiau, tai yra bloga praktika (užteršia reguliariąją išraišką atgaliniais brūkšniais).

Yra specialieji simboliai: $ ^ . * + ? \ / {} [] () |

Nėra specialieji simboliai: @ : , ' " ; - _ = < > % # ~ `& !

Praktinės užduotys

Duota eilutė:

let str = 'a.a aba aea';

Parašykite reguliariąją išraišką, kuri ras eilutę 'a.a', neperimdama kitų.

Duota eilutė:

let str = '2+3 223 2223';

Parašykite reguliariąją išraišką, kuri ras eilutę '2+3', neperimdama kitų.

Duota eilutė:

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

Parašykite reguliariąją išraišką, kuri ras eilutes '2+3', '2++3', '2+++3', neperimdama kitų (+ gali būti bet koks kiekis).

Duota eilutė:

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

Parašykite reguliariąją išraišką, kuri ras eilutes '23', '2+3', '2++3', '2+++3', neperimdama kitų.

Duota eilutė:

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

Parašykite reguliariąją išraišką, kuri ras eilutes '*q+', '*qq+', '*qqq+', neperimdama kitų.

Duota eilutė:

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

Parašykite reguliariąją išraišką, kuri ras eilutes kvadratiniuose skliaustuose ir pakeis jas į '!'.

Lietuvių
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mes naudojame slapukus svetainės veikimui, analizei ir personalizavimui. Duomenų apdorojimas vyksta pagal Privatumo politiką.
priimti visus nustatyti atšaukti